2012-06-19 56 views
1

开始之前:我在Tomcat 6上运行JSF 2.0 MyFaces,并且我已经在此项目中使用了一些primefaces。ui的替代方案:包括在JSF 2.0中动态包含页面

我有一个页面有三个过滤下拉列表,它们在我的支持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只执行一次?还有什么我可以用来动态地包含一个页面吗?

回答

1

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

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

+1

你能提供@戴夫例如如何使用用户界面:插入基于下拉的变化而变化的内容?谢谢。 – Ziletka