【问题标题】:Losing validation with <f:ajax>使用 <f:ajax> 丢失验证
【发布时间】:2011-11-21 01:59:49
【问题描述】:

我有这个表格:

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

如果我尝试注册一个没有名字的人并且没有显示错误消息。相反,删除人员时会出现错误消息:&lt;f:ajax execute="@form" render="out" /&gt;

为什么会这样?

【问题讨论】:

    标签: jsf jsf-2 richfaces


    【解决方案1】:

    您还需要在render 中包含消息的ID。

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

    如果您有多个消息,也可以只呈现整个表单。

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

    另见:

    【讨论】:

      【解决方案2】:

      可能有点晚了,但是……

      &lt;rich:message&gt; 的属性ajaxRendered 的默认值为true,这会强制它出现在 AJAX 响应中。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-07
        • 2014-10-18
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        • 2018-09-06
        • 1970-01-01
        相关资源
        最近更新 更多