Потеря проверки с помощью <f: ajax> - PullRequest
1 голос
/ 20 сентября 2011

У меня есть эта форма:

 <h:form id="form">
    <h:panelGrid columns="3" >

        <h:outputLabel for="name"   value="Name:" />
        <h:inputText   id="name"    value="#{register.person.name}"  >  
            <f:ajax    event="blur" listener="#{register.validateName}" render="m_name" />
        </h:inputText>
        <rich:message  id="m_name"  for="name"  ajaxRendered="false"/>

        <!-- other fields -->                 

        <h:commandButton value="Register" action="#{register.registerPerson}" >
            <f:ajax execute="@form" render="out" />
        </h:commandButton>

        <h:outputText value="#{register.recordStatus}" id="out" />

</h:panelGrid>

Если я пытаюсь зарегистрировать человека без имени и сообщение об ошибке не отображается.Вместо этого при удалении человека появляется сообщение об ошибке: <f:ajax execute="@form" render="out" />.

Почему это происходит?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2011

Вам также необходимо включить идентификатор сообщения в render.

<f:ajax execute="@form" render="m_name out" />

Вы также можете просто отобразить всю форму, если у вас более одного сообщения.

<f:ajax execute="@form" render="@form" />

См. Также:

0 голосов
/ 15 декабря 2016

Может быть немного поздно, но ...

Атрибут ajaxRendered из <rich:message> имеет значение по умолчанию true, что заставляет его появляться в ответах AJAX.

Вы устанавливаете его на false в своей форме, и поэтому вам нужно указать, какие вызовы AJAX должны повторно его отрендерить.

...