如何在Facelets文件中切换两个ui:composition?

时间:2018-02-16 19:00:09

标签: jsf facelets

在JSF xhtml文件中,我希望能够在两个不同的ui:基于某个标志的组合之间进行选择。下面使用虚构的magic:if标记说明了这一点。我怎样才能做到这一点?换句话说,我可以用什么真正的标签代替magic:if

<magic:if test="showOption1">
  <ui:composition template="/option1.xhtml">
    <ui:define name="header">Foo</ui:define>
  </ui:composition>
</magic:if>

<magic:if test="!showOption1">
  <ui:composition template="/option2.xhtml">
    <ui:define name="header">Foo</ui:define>
  </ui:composition>
</magic:if>

1 个答案:

答案 0 :(得分:2)

  

换句话说,我可以用什么真正的标签取代魔法:如果?

没有。 Array ( [fooA] => foo number 10 [fooB] => foo string example ) 是根元素。没有什么可以最终结束。

您有两个选择:

  1. 切换<ui:composition>属性本身。

    template
  2. <ui:composition template="/option#{showOption1 ? 1 : 2}.xhtml"> <ui:define name="header">Foo</ui:define> </ui:composition> 内使用<ui:decorate>代替,<ui:composition>可以包含<c:if>

    <ui:composition template="/options.xhtml">
        <c:if test="#{showOption1}">
            <ui:decorate template="/option1.xhtml">
                <ui:define name="header">Foo</ui:define>
            </ui:decorate>
        </c:if>
        <c:if test="#{not showOption1}">
            <ui:decorate template="/option2.xhtml">
                <ui:define name="header">Foo</ui:define>
            </ui:decorate>
        </c:if>
    </ui:composition>