2012-03-26 57 views
1

这是我的代码:A4J:COMMANDBUTTON不允许 “<” 在渲染

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

任何想法,为什么?帮助将非常感激。

在此先感谢

回答

2

更换

rendered="#{ipRange.status < 2}"/> 

rendered="#{ipRange.status lt 2}"/> 

编辑:如果该问题是:“为什么会有这样的错误发生时的Facelets和表达语言的文档说,这是一个有效的语法?“那么我没有这个答案,我会删除这个答案。

0

您可以使用以下语法之一。

#{ipRange.status lt 2} 

#{ipRange.status &lt; 2} 

如果使用JSF里面的 “<” 人物属性,当它试图解析您的XHTML页面的XML解析器给出了这样的错误。 只需将其替换为“& lt;”即可,或者您可以使用JSF在这种情况下引入的语法,即上述的“lt”。 (lt代表小于。)