有条件地渲染图标

Render an icon conditionally

在Primefaces的数据表中,我想有条件地在特定列中插入一个图标。

此列有两个值:1 或 0,如果为 1,则使用复选图标,如果为 0,则使用关闭图标。

我已经尝试过 "rendered"、"style"、styleClass,但它对我不起作用。要么输出读取值,要么不呈现任何内容(列为空)。

有什么办法吗?

我传递了一部分代码:

<p:column headerText="Vota" width="30" filterBy="#{vot.estado}">
    <h:outputText value="#{vot.estado}" style="float:right #{vot.estado == 1 ? 'ui-icon-check' : 'ui-icon-close'}"/>
</p:column>
<p:column headerText="Vota" width="30" filterBy="#{vot.estado}>
     <h:outputText value="#{vot.estado}"/>
     <i class="ui-icon #{vot.estado == 1 ? 'ui-icon-check' : 'ui-icon-close'}" style="display: inline-block"/>
</p:column>

您可以将 rendered 属性与 outputText 本身一起使用,如下所示:

<p:column headerText="Vota" width="30" filterBy="#{vot.estado}">
     <h:outputText rendered="#{vot.estado == 1}" value="#{vot.estado}" style="float:right" styleClass="ui-icon-check"/>
     <h:outputText rendered="#{vot.estado != 1}" value="#{vot.estado}" style="float:right" styleClass="ui-icon-close"/>
</p:column>

你在 style 属性中有图标信息,而它应该在 styleClass 属性中,你也需要通用 ui-icon class..所以将你的代码更改为以下内容让它工作

<p:column headerText="Vota" width="30" filterBy="#{vot.estado}">
    <h:outputText value="#{vot.estado}" style="float:right" styleClass="ui-icon #{vot.estado == 1 ? 'ui-icon-check' : 'ui-icon-close'}"/>
</p:column>