有条件地在ui:composition标签中包含模板文件

时间:2011-12-15 08:39:30

标签: jsf facelets

我在jsf应用程序中使用facelets进行模板化。我想在ui:composition标签中有条件地包含一个模板文件。如果用户已登录,则模板必须为“authorized.xhtml”,如果用户未登录,则模板必须为“unauthorized.xhtml”。有办法吗?感谢。

<ui:composition template="/templates/unauthorized.xhtml">
<ui:composition template="/templates/authorized.xhtml">

我正在使用JSF 1.2。

1 个答案:

答案 0 :(得分:6)

我会在isAuthorized()属性上尝试三元操作,如果你的登录bean中有一个:

<ui:composition template="#{loginbean.authorized ? '/templates/authorized.xhtml' : '/templates/unauthorized.xhtml'}">

或者使用两个<h:panelGroup>代码,其中包含适当的rendered值:

<h:panelGroup rendered="#{loginbean.authorized}">
    <ui:decorate template="/templates/authorized.xhtml">
</h:panelGroup>

<h:panelGroup rendered="#{not loginbean.authorized}">
    <ui:decorate template="/templates/unauthorized.xhtml">
</h:panelGroup>