Search code examples
jsfjsf-2richfaces

Losing validation with <f:ajax>


I have this form:

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

If I try to register some person without a name and no error message is displayed. Instead, an error message appears when removing a person : <f:ajax execute="@form" render="out" />.

Why is this happening ?


Solution

  • You need to include the ID of the message in the render as well.

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

    You can also just render the entire form if you have more than one message.

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

    See also: