primefaces中的自定义验证

primefaces中的自定义验证,primefaces,Primefaces,我用的是PrimeFaces3.0。 我有三个文本字段,其中任何一个都是必需的。 如何在primefaces中验证这一点。 请帮忙。。 感谢通常,当在组件上使用自定义的f:validator标记时,在服务器端应用值之前,将在生命周期事件阶段调用此验证器。当挂起的值通过验证时,它将作为组件的值应用。如果验证失败,则该值将被丢弃,通常会添加验证消息 此过程在这种情况下不起作用,因为确定给定输入字段的值是否有效取决于其他输入字段的待定值,并且我们无法保证组件验证的顺序 我通常通过在页面上声明PreRe

我用的是PrimeFaces3.0。 我有三个文本字段,其中任何一个都是必需的。 如何在primefaces中验证这一点。 请帮忙。。
感谢

通常,当在组件上使用自定义的
f:validator
标记时,在服务器端应用值之前,将在生命周期事件阶段调用此验证器。当挂起的值通过验证时,它将作为组件的值应用。如果验证失败,则该值将被丢弃,通常会添加验证消息

此过程在这种情况下不起作用,因为确定给定输入字段的值是否有效取决于其他输入字段的待定值,并且我们无法保证组件验证的顺序

我通常通过在页面上声明PreRender事件生命周期事件来解决此问题:

<f:event listener="#{manageBean.preRenderValidation}" type="preRenderView" />
当preRender中发生验证错误时,特定组件事件可能已经更改了某些状态或返回了导航操作,因此需要在验证失败的情况下手动恢复这些操作。当然,另一种方法是在每个方法开始时进行MAULY验证

public void preRenderValidation() {
    // validation logic
    if (failed) {
      FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "You have a validation error", null);
      getCurrentFacesContextInstance().addMessage(null, msg);
    }
    // If action redirects to another page or state needs reverted back then this must be done
    // manually
}