您知道在运行时选择不同facelets组件的方法吗?
我有一些类似的代码:
<s:fragment rendered="#{r== 'case1'}">
<div>
<ui:include src="case1.xhtml" />
</div>
</s:fragment>
<s:fragment rendered="#{r== 'case2'}">
<div>
<ui:include src="case2.xhtml" />
</div>
</s:fragment>
我想写
<ui:include src="#{r}.xhtml" />
感谢。
答案 0 :(得分:1)
您的解决方案应该正常工作 - src attribute可以是文字或EL表达式。您可能希望使表达式使用托管bean属性或通过function解析它。这样,您可以确保它永远不为null(如果是,您可以返回对空页面的引用)。如果#{r}解析为null,您可能会收到404错误。
<ui:include src="#{myfn:resolveNotNull(r, 'pageIfRIsNull')}.xhtml" />
答案 1 :(得分:0)
不确定。另一种方法是使用带有ui:insert的模板,然后直接使用ui:case以编程方式定义case1或case2。
答案 2 :(得分:0)
可以选择性地使用ui:include与其他JSF组件。例如:
<h:panelGroup rendered="#{!menuMBean.passwordResetRequired}">
<ui:include src="homeNormal.xhtml" />
</h:panelGroup>