a4j: командная кнопка не допускает "<" в отображаемом - PullRequest
1 голос
/ 26 марта 2012

это мой код:

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

2 голосов
/ 26 марта 2012

Заменить

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

с

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

РЕДАКТИРОВАТЬ: Если вопрос «Почему эта ошибка возникает, когда документы Facelets и Expression Language говорят, что это правильный синтаксис?» тогда у меня нет этого ответа, и я удалю этот ответ.

0 голосов
/ 29 марта 2012

Вы можете использовать один из следующих синтаксисов:

#{ipRange.status lt 2}

или

#{ipRange.status &lt; 2}

Если вы используете символ " <</strong>" внутри атрибута JSF, то xmlparser выдает эту ошибку, когда пытается проанализировать вашу страницу xhtml.Просто вы можете избежать этого символа, заменив его на « <</strong>», или вы можете использовать синтаксис, который JSF вводит для использования в таких случаях, а именно « lt », как указано выше.( lt означает Меньше, чем.)

...