开始之前:我在 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 只执行一次是否正确?还有什么我可以用来动态包含页面的吗?