有条件地渲染图标

时间:2018-10-19 14:06:54

标签: jsf primefaces

在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>

3 个答案:

答案 0 :(得分:2)

<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>

答案 1 :(得分:2)

您在style属性中具有图标信息,而应该在styleClass属性中,并且还需要通用的ui-icon类。因此,请将代码更改为以下内容以使其起作用

select STUFF((SELECT ',' + convert(varchar(10), rr1._cv_id)
FROM #reportrows rr1 
WHERE rr1._c_id=rr._c_id 
FOR XML PATH('')),1, 1,null) FROM #reportrows rr

答案 2 :(得分:1)

您可以对outputText本身使用rendered属性,如下所示:

<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>