我需要在这种情况下使用两种不同的验证。如果未选择值并提交表单,则需要显示第一个。
当用户选择“是”作为答案时,应立即验证第二个。 到目前为止,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>
答案 0 :(得分:0)
PF p:commandButton
默认为ajax,这是您遇到问题的原因。
如果您需要普通帖子,请在ajax="false"
上添加commandButton并且应该可以正常工作。
如果您需要ajax,请将update="yourpanelid"
和process="yourpanelid"
添加到您的元素中。