将ajax验证与表单验证相结合

时间:2014-10-20 13:38:21

标签: validation jsf primefaces message

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

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

我认为在同一个p:消息中从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>

1 个答案:

答案 0 :(得分:0)

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