使用<f:ajax> </f:ajax>失去验证

时间:2011-09-20 13:01:16

标签: jsf jsf-2 richfaces

我有这样的表格:

 <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 个答案:

答案 0 :(得分:3)

您还需要在render中添加邮件的ID。

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

如果您有多条消息,也可以渲染整个表单。

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

另见:

答案 1 :(得分:0)

可能会有点晚,但是......

ajaxRendered的属性<rich:message>的默认值为true,强制它出现在AJAX响应中。

您在表单中将其设置为false,因此您必须指定哪些AJAX调用应重新呈现它。