【问题标题】:Alternative to ui:include for dynamically including pages in JSF 2.0ui:include 的替代方案,用于在 JSF 2.0 中动态包含页面
【发布时间】:2012-06-19 14:59:08
【问题描述】:

开始之前:我在 Tomcat 6 上运行 JSF 2.0 MyFaces,并且我已经在这个项目中使用了一些 primefaces。

我有一个页面,其中包含三个过滤下拉列表,它们在我的支持 bean 中设置了一堆参数。然后使用这些参数在下拉菜单下包含一个页面。我正在使用 ui:include 来包含此页面,但我很确定 ui:include 每个生命周期只执行一次。这意味着页面只显示一次,并且不会在下拉列表更改时更改。

这是我的观点的一个例子

<h:form>
    <!-- dropdowns to build the route to the included page -->
    <h:selectOneMenu>
        <f:selectItems ... />
        <f:ajax 
           event="change" 
           render=":formInclude" 
           execute=":formInclude" 
           listener="#{control.handledd1Change}"/>
    </h:selectOneMenu>
    <h:selectOneMenu>
        <f:selectItems ... />
        <f:ajax 
           event="change" 
           render=":formInclude" 
           execute=":formInclude" 
           listener="#{control.handledd2Change}"/>
    </h:selectOneMenu>
    <h:selectOneMenu>
        <f:selectItems ... />
        <f:ajax 
           event="change" 
           render=":formInclude" 
           execute=":formInclude" 
           listener="#{control.handledd3Change}"/>
    </h:selectOneMenu>
</h:form>
<h:panelGrid id="formInclude">
    <ui:include src="#{control.formName}.xhtml"/>
</h:panelGrid>

所以,我想知道在 JSF 中动态包含页面的最正确方法是什么。我对 ui:include 只执行一次是否正确?还有什么我可以用来动态包含页面的吗?

【问题讨论】:

    标签: jsf-2 myfaces


    【解决方案1】:

    事实证明,我能够在每次下拉更改后执行 ui:insert。我所要做的就是使用 ajax 执行并重新渲染它。这是我用来帮助找路的页面:

    How to include another XHTML in XHTML using JSF 2.0 Facelets?

    【讨论】:

    • 您能否提供@Dave 示例如何使用 ui:insert 根据下拉更改更改内容?谢谢。
    猜你喜欢
    • 2013-12-05
    • 2014-02-24
    • 2012-02-29
    • 1970-01-01
    • 2013-01-01
    • 2018-02-21
    • 2011-04-12
    • 2014-07-22
    • 1970-01-01
    相关资源
    最近更新 更多