访问<ui:insert> </ui:insert>的name属性

时间:2011-04-13 14:06:42

标签: jsf facelets

我有一个带有标题和副标题的JSF模板:

<h3><ui:insert name="title"/></h3>
<hr/>
<h5><ui:insert name="subtitle"/></h5>

使用此模板的所有页面都有标题,但并不总是一个副标题:

<ui:define name="title">My Title with no subtitle</ui:define>

如果没有副标题,我不想拥有<hr/>标签。所以我真正想做的是检查subtitle是否为空,如果是,则忽略代码块。这样的事情:

<h3><ui:insert name="title"/></h3>
<c:if test="#{not empty subtitle}">
    <hr/>
    <h5><ui:insert name="subtitle"/></h5>
<c:if>

但当然<c:if test="#{not empty subtitle}">不起作用。我不知道如何访问subtitle变量的值。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:8)

最接近的是将字幕定义为<ui:param>

因此,

<ui:define name="title">My Title with a subtitle</ui:define>
<ui:param name="subtitle" value="A subtitle" />

<h3><ui:insert name="title"/></h3>
<ui:fragment rendered="#{not empty subtitle}">
    <hr/>
    <h5>#{subtitle}</h5>
</ui:fragment>