【问题标题】:Refreshing JSF page刷新 JSF 页面
【发布时间】:2012-08-13 17:40:47
【问题描述】:

我有一个 JSF 页面,我需要在该页面上允许用户动态创建表单并从同一页面提交在此表单中输入的数据。

我采用了两种设计方法来实现它,但都没有完全发挥作用。

方法 1:我在 JSF 页面上放置了一个 p:panel 组件作为动态表单的容器,并将其绑定到我的支持 bean。此外,我放置了 commandButtons 以在页面上添加表单元素,并且在这些按钮的操作处理程序中,我放置了将特定 UIComponents 添加到面板 UI 组件的逻辑。这些动作处理程序的结果,我设置为与 faces-redirect=true 相同的页面。 结果:动态显示正常,但是这个动态表单的提交按钮总是只在第二次点击时起作用。

方法2:我在JSF页面上放了一个p:panel组件,作为动态表单的容器。在这个面板中,我使用 ui:include 包含了一个生成的 JSF 页面。与之前的方法类似,在添加表单元素的命令按钮的操作处理程序中,我生成要包含的 JSF 页面。这些动作处理程序的结果,我设置为与 faces-redirect=true 相同的页面。 结果:在动作处理程序执行和页面渲染完成后,生成的 JSF 页面没有立即显示。手册页刷新 2 或 3 次后,会显示生成的 JSF 页面。

我想,我没有采用正确的设计来满足我的要求。您能否建议我在这两种方法或任何替代方法中出了什么问题。

我正在使用 PrimeFaces 和 Tomcat 7.0.27。

最好的问候, 阿南德。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    我一直在 JSF 2.2 中使用 Glassfish 上的 PrimeFaces 3.3 开发单页管理应用程序。您应该能够使用托管 bean 和 ajax 处理所有动态表单需求。确保您的提交表单 bean 是 ViewScoped。我的大部分 JSF 问题都与范围有关。每个表单标签都应该有一个单一的用途。这是我用于 FORM 页面的结构。

    <html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"      
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
    </h:head>
    <h:body>
        <h2>
           FORM ONE
        </h2>        
        <h:form>
           <p:panel> or <p:panelGrid>
        </h:form>
        <h2>
           FORM TWO
        </h2>        
        <h:form>
           <p:panel> or <p:panelGrid>
        </h:form>
    </h:body>
    

    BalusC 是 JSF 之王,这里是他关于这个主题的相关条目。

    http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#ManagedBeanScopes

    http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html

    您使用的是 JSF 1.2 还是 2.x?

    http://balusc.blogspot.com/2006/06/communication-in-jsf.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 1970-01-01
      • 2012-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多