7

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“我根本不需要图标”(除了icon=完全去掉属性)?

4

2 回答 2

7

我可以在不复制按钮的情况下想到 2 种方法。

  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' : ''}" />
    
于 2012-06-04T13:19:49.470 回答
2

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

于 2012-06-04T09:46:19.017 回答