与[...]关联的属性“已渲染”的值不得包含'<'字符

时间:2014-12-19 22:30:31

标签: jsf el rendered-attribute

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

如何解决我的问题?

2 个答案:

答案 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}"