在JSF中有条件

时间:2011-06-22 04:35:49

标签: jsf jsf-2

我可以使用JSF进行条件逻辑,而不使用JSTL标记吗?

例如,我创建了一个复合组件,并想要声明,如果指定了'id'属性,则定义'id'属性,但如果未指定'id'属性,则不要指定'id'属性。

现在我必须使用渲染属性,但那里有很多重复,只是在指定id方面略有不同。

<composite:interface>
    <composite:attribute name="id" />
        ...
</composite:interface>

<composite:implementation>
    <!-- render this when id is specified, id attribute is defined -->
    <h:selectOneMenu 
                id="#{cc.attrs.id}" 
                label="#{cc.attrs.label}"
                value="#{cc.attrs.value}"
                rendered="#{cc.attrs.id != null}" ...>
                ...
    </h:selectOneMenu>

    <!-- render this when id is not specified, id attribute is NOT defined -->
    <h:selectOneMenu 
                label="#{cc.attrs.label}"
                value="#{cc.attrs.value}"
                rendered="#{cc.attrs.id == null}" ...>
                ...
    </h:selectOneMenu>
</composite:implementation>

有什么想法可以避免这种重复并更容易地处理有条件的东西吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

自己指定默认id

<h:selectOneMenu 
    id="#{not empty cc.attrs.id ? cc.attrs.id : 'menu'}" 
    label="#{cc.attrs.label}"
    value="#{cc.attrs.value}">
    ...
</h:selectOneMenu>

无论如何它都是唯一的,因为componsite组件自己的客户端ID将被添加到前面。