我正在创建一个简单的Web应用程序来尝试使用PrimeFaces的JSF2,到目前为止,它开箱即用的效果确实令人印象深刻。通过各种教程和文章,我对模板中的属性以及是否可以插入这些属性提出疑问。
我知道我可以在模板中插入HTML内容块,例如:
<title>
<ui:insert name="title">Default Title</ui:insert>
</title>
但在某些情况下,在属性级别插入会很有用。我想到的具体问题是TabMenu,如果您使用TabMenu进行导航(并且您希望每个页面都使用相同的TabMenu以便使用模板),您可能希望以不同的方式设置'activeIndex',具体取决于你正在看哪个页面。但是,这似乎不适用于模板文件:
<p:tabMenu <ui:insert name="activeIndex">activeIndex="0"</ui:insert>>
<p:menuitem value="Overview" outcome="main" icon="ui-icon-star"/>
<p:menuitem value="Demos" outcome="demos" icon="ui-icon-search" />
<p:menuitem value="Documentation" outcome="docs" icon="ui-icon-document"/>
</p:tabMenu>
希望这是有道理的。有没有办法做到这一点,或者这个设计是完全错误的还有更好的方法吗?
答案 0 :(得分:3)
将其传递为<ui:param>
。
E.g。在模板客户端:
<ui:composition template="/WEB-INF/templates/some.xhtml">
<ui:param name="activeIndex" value="0" />
...
</ui:composition>
并在主模板中:
<p:tabMenu activeIndex="#{activeIndex}">