ajax验证一次只显示一条消息



我正在研究带字段验证的JSF表单。

<h:form>
    <h:panelGrid id="panel" styleClass="data_table_pricing" columns="3">
        <h:outputText value="Title"/>
        <h:inputText id="title" value="#{pricingForm.title}" validatorMessage="Value is too big.">
            <f:validateLength minimum="0" maximum="40" />
            <f:ajax event="change" render="@form"/>
        </h:inputText>
        <h:message id="title_message" for="title" style="color:red"/>
        <!-- // -->
        <h:outputText value="First name"/>
        <h:inputText id="first_name" value="#{pricingForm.firstName}" validatorMessage="Value is too big.">
            <f:validateLength minimum="0" maximum="40" />
            <f:ajax event="change" render="@form"/>
        </h:inputText>
        <h:message id="first_name_message" for="first_name" style="color:red"/>
        <!-- // -->
        <h:outputText value="Last name"/>
        <h:inputText id="last_name" value="#{pricingForm.lastName}" validatorMessage="Value is too big.">
            <f:validateLength minimum="0" maximum="40" />
            <f:ajax event="change" render="@form"/>
        </h:inputText>
        <h:message id="last_name_message" for="last_name" style="color:red"/>
        <!-- // -->
    </h:panelGrid>
    <h:commandLink value="reset" class="link" type="reset" style="margin: 20px;">
        <f:ajax execute="@form" render="@form"/>
    </h:commandLink>
    <h:commandLink value="Next" class="link" style="margin: 20px;" actionListener="#{pricingForm.calculatorPage()}">
        <f:ajax execute="@form" render="@form"/>
    </h:commandLink>
</h:form>

当我在几个输入字段中插入大值时,我只看到一条错误消息。看起来在呈现表单时,旧的值没有保存。你能帮我解决这个吗?

This,

<f:ajax event="change" render="@form"/>

的含义与"当当前输入的值发生变化时,只提交和处理当前输入,并更新整个表单"相同。

因此,其他输入不被处理/验证,并且更新基本上清除了以前的消息。

您可能只想更新关联的消息。例如,如果您的第一次输入:

<f:ajax render="title_message" />

我只省略了event="change",因为这是<h:inputXxx>组件中的默认值。

参见:

  • 了解PrimeFaces process/update和JSF f:ajax execute/render属性

相关内容

  • 没有找到相关文章

最新更新