我在p:dataTable
中有数值。当值小于0时,应插入“ - ”符号而不是值。
我尝试使用c:if
,但这不起作用。我正在阅读,人们建议rendered
旗帜。
代码是:
<p:column headerText="Valor">
<h:outputText rendered="${valor.valor > 0}" value="${valor.valor}" />
<h:outputText rendered="${valor.valor <= 0}" value="${valorMB.noDato}" />
</p:column>
并且服务器给我这个错误:
与元素类型“h:outputText”关联的属性“rendered”的值不得包含'&lt;'字符
如果我使用c:if
,则表格中没有数据:
<c:if test="#{valor.valor > 0}">
<h:outputText value="#{valor.valor}" />
<c:otherwise>
<h:outputText value="-" />
</c:otherwise>
</c:if>
如何解决我的问题?
答案 0 :(得分:13)
使用基于关键字的EL运算符代替基于符号的EL运算符:
<h:outputText rendered="#{valor.valor gt 0}" value="#{valor.valor}" /> <!-- valor.valor > 0 -->
<h:outputText rendered="#{valor.valor le 0}" value="-" /> <!-- valor.valor <= 0 -->
lt
(低于)gt
(大于)le
(低于或等于)ge
(大于或等于)eq
(相等)ne
(不等于)and
or
答案 1 :(得分:2)
您收到该错误是因为“&lt;”字符在xml中的字符串中是非法的。你应该使用Expression Language的比较方式。
在你的情况中你应该使用le
,这意味着 小于或等于 。
将"${valor.valor <= 0}"
更改为"${valor.valor le 0}"