jsf2-jsf中的条件



我可以在没有JSTL标记的情况下用JSF做条件逻辑吗?

例如,我制作了一个复合组件,并希望声明,如果指定了"id"属性,则定义"id"特性,但如果没有指定"id",则不要指定"id)"特性。

现在我必须使用rendered属性,但其中有很多重复,在指定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>

有什么想法可以避免这种重复,更容易地做有条件的事情吗?

谢谢!

自己指定一个默认的id

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

无论如何,它都是唯一的,因为compensite组件自己的客户端ID将被预先准备好。

相关内容

  • 没有找到相关文章