2012-03-26 12 views
1
gemacht

dies ist mein Code:a4j: Befehlsschaltfläche nicht erlaubt "<" in

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

dies ist der Fehler, den ich bekommen:

Error Traced[line: 114] The value of attribute "rendered" associated with an element type "a4j:commandButton" must not contain the '<' character. 

eine Idee, warum? Hilfe würde wirklich geschätzt werden.

Dank im Voraus

Antwort

2

ersetzen

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

mit

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

EDIT: Wenn die Frage lautet: „Warum dieser Fehler passiert, wenn die Facelets und Sprache docs Ausdruck sagen, es ist ein gültige Syntax? " dann habe ich diese Antwort nicht und lösche diese Antwort.

0

Sie können eine der folgenden Syntaxen verwenden.

#{ipRange.status lt 2} 

oder

#{ipRange.status &lt; 2} 

Wenn Sie "<" Charakter in einer JSF verwenden Attribut der XML-Parser diesen Fehler gibt, wenn es versucht, Ihre xhtml Seite zu analysieren. Sie können dieses Zeichen einfach umgehen, indem Sie es durch "& lt;" ersetzen oder Sie können die Syntax verwenden, die JSF in solchen Fällen einführt, die wie oben "lt" ist. (lt steht für weniger als.)