PrimeFaces CommandButton:动态启用/禁用图标

时间:2012-06-04 09:19:18

标签: jsf primefaces

PrimeFaces的CommandButton允许指定一个图标:

<p:commandButton value="Press me" icon="redBall" ... />

但是,我需要根据JSF托管bean属性启用/禁用图标。

我试过

<p:commandButton value="Press me" icon="#{bean.iconClass}" ... />

这适用于选择不同的图标,但不允许完全禁用图标(即获得相同的渲染,如没有icon=属性)。我可以在getIconClass()中返回一个空字符串,但PrimeFaces仍然会为按钮内的图标渲染额外的<span>,而CSS样式会使该范围显示为默认图标。

有没有办法告诉PrimeFaces&#34;我根本不想要图标&#34; (除了完全取出icon=属性)?

2 个答案:

答案 0 :(得分:6)

我可以想到两种方法而不重复按钮。

  1. 提供由<f:attribute>有条件添加的<c:if>图标。

    <p:commandButton ...>
        <c:if test="#{not empty bean.icon}"><f:attribute name="icon" value="#{bean.icon}" /></c:if>
    </p:commandButton>
    

  2. 设置一个样式类,它完全隐藏图标并有条件地提供它。

    .hideicon .ui-icon { display: none; }
    .hideicon .ui-button-text { padding-left: 1em; }
    

    <p:commandButton ... icon="#{bean.icon}" styleClass="#{empty bean.icon ? 'hideicon' : ''}" />
    

答案 1 :(得分:2)

一个蹩脚的解决方法是拥有2个命令按钮。一个有图标定义,一个没有。然后渲染正确的。

相关问题