我正在使用primefaces和JSF。我有一个可选的地址字段。如果用户填写任何一个字段(例如zip或name),则需要所有其他字段。什么是进行此验证的最佳方式。
答案 0 :(得分:1)
您可以添加postValidate事件来验证多个字段,例如
<f:event listener="#{bean.validationMethod}" type="postValidate" />
<h:panelGroup id="xyz" rendered="#{facesContext.validationFailed}">
<h:message for="myform"/>
</h:panelGroup>
<h:panelGroup id="myform">
.......
<h:panelGroup>
这应该在模型更新之前触发,您可以使用
获取不同组件的新值FacesContext fc = FacesContext.getCurrentInstance();
UIComponent components = event.getComponent();
UIInput param1 = (UIInput) components.findComponent("param1");
UIInput param2 = (UIInput) components.findComponent("param2");
如果验证失败,请调用F acesContext.getCurrentInstance().validationFailed()
并为myform添加消息。
如果你没有使用自定义验证,只是想确保在填写特定输入时添加其他输入,那么我建议使用 Omnifaces validateAllOrNone ,