【问题标题】:Combining ajax validation with form validation将 ajax 验证与表单验证相结合
【发布时间】:2014-10-20 13:38:20
【问题描述】:

我需要在这种情况下使用两种不同的验证。第一个需要显示,如果没有选择值并且提交了表单。

当用户选择“是”作为答案时,应立即验证第二个。 到目前为止,ajax 请求工作正常,但是当没有选择任何值时,我只收到一个警告: (有一些未处理的 FacesMessage,这意味着不是每个 FacesMessage 都有机会被渲染。这些未处理的 FacesMessage 是:……)

我认为在同一 p:message 中捕获来自 p:selectOneRadio-Tag 的不同消息存在问题。谁能验证我的想法?结合这两种不同类型的验证,还有哪些其他可能的解决方案? 代码如下:

<h:form id="formHealtData">
    <p:panelGrid columns="1" 
                 layout="grid" 
                 cellpadding="5">
        <h:outputLabel for="hQuestion1"
                       value="FirstQuestion" />
        <p:selectOneRadio id="hQuestion1"
                          value="#{applicationData.hQuestion1}" 
                          required="true" 
                          requiredMessage="Please answer the question!">
            <f:selectItem itemValue="#{true}" itemLabel="Yes" />
            <f:selectItem itemValue="#{false}" itemLabel="No" />
            <f:validator for="hQuestion1"
                         validatorId="trueQuestionValidator" />
            <p:ajax event="change" update="messQ1" />
        </p:selectOneRadio>
        <p:message id="messQ1" 
                   for="hQuestion1" />
    </p:panelGrid>
    <p:commandButton id="next" 
                     value="Next" 
                     action="paymentdata">
    </p:commandButton>  
</h:form>

【问题讨论】:

    标签: validation jsf primefaces message


    【解决方案1】:

    PF p:commandButton 默认是ajax,这就是你的问题的原因。 如果您需要普通帖子,请在 commandButton 上添加 ajax="false" 并且应该可以工作。 如果您需要 ajax,请将 update="yourpanelid"process="yourpanelid" 添加到您的元素中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 2013-07-20
      • 2011-03-12
      • 1970-01-01
      相关资源
      最近更新 更多