0

我正在使用 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。

谢谢!

4

0 回答 0