我正在使用 BeanValidator(扩展 javax.faces.validator.BeanValidator),在某些情况下我需要阻止验证,因为某些操作不需要它。我的验证器检查请求参数映射中是否存在值为“ignore_validation”的“validationBean”参数,如果找到,则跳过验证。
我在ViewScoped托管 bean 中很难做到这一点。通过执行以下操作单击某些按钮时,我试图跳过验证:
<p:commandButton id="button" icon="ui-icon-plusthick" onclick="createDialogWidget.show()">
<f:param name="validationBean" value="ignore_validation"/>
</p:commandButton>
在我的 BeanValidator 中,我试图获取参数并跳过验证:
public void validate(FacesContext context, UIComponent component, Object value) {
String validationBean = context.getExternalContext().getRequestParameterMap().get("validationBean");
if (validationBean != null && validationBean.equals("ignore_validation")) {
return;
}
...
}
但是,上面的“validationBean”变量为空,即没有找到参数。因此,正在执行验证。
为什么请求参数映射中没有参数?这个概念有什么问题吗?在某些情况下是否有其他推荐的方法来跳过 BeanValidator 验证?
我正在使用 primefaces 3.2.4、Mojarra 2.1.2 和 Tomcat 6.0.36。
谢谢!