这是我的代码:
<a4j:outputPanel ajaxRendered="true">
<h:form>
<rich:dataTable id="iprangesList"
value="#{ipRangeOverviewAction_publicIpRangeList}"
var="iprange" rendered="#{ipRangeOverviewAction_publicIpRangeList.size>0}"
style="width: 100%"
rows="20"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">
<f:facet name="header">
<h:outputText value="#{ipRangeOverviewAction_publicIpRangeList.size} record(s) found."/>
</f:facet>
<rich:column>
<f:facet name="header">Information</f:facet>
<h:outputText value="#{iprange.info}"/>
</rich:column>
<rich:column>
<f:facet name="header">Edit</f:facet>
<a4j:commandButton action="#{ipRangeOverviewAction.redirectStringForEdit(iprange)}"
value="edit"
rendered="#{ipRange.status < 2}"/>
</rich:column>
<f:facet name="footer">
<rich:datascroller renderIfSinglePage="false" maxPages="5"/>
</f:facet>
</rich:dataTable>
</h:form>
</a4j:outputPanel>
这是我得到的错误:
Error Traced[line: 114] The value of attribute "rendered" associated with an element type "a4j:commandButton" must not contain the '<' character.
任何想法为什么?帮助将非常感激。
提前致谢
答案 0 :(得分:2)
替换
rendered="#{ipRange.status < 2}"/>
带
rendered="#{ipRange.status lt 2}"/>
编辑:如果问题是“当Facelets和Expression Language文档说它是一个有效的语法时,为什么会发生这个错误?”然后我没有这个答案,我会删除这个答案。
答案 1 :(得分:0)
您可以使用以下语法之一。
#{ipRange.status lt 2}
或
#{ipRange.status < 2}
如果在JSF属性中使用“&lt; ”字符,xml解析器在尝试解析您的xhtml页面时会出现此错误。 只需将其替换为“&amp; lt; ”即可转义此字符,或者您可以使用JSF引入的语法在这种情况下使用,即“ lt ”如上。 ( lt 代表Less Than。)