私は 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」変数は null です。つまり、パラメーターが見つかりませんでした。したがって、検証が実行されています。
リクエスト パラメータ マップにパラメータがないのはなぜですか? このコンセプトに何か問題はありますか?一部のシナリオで BeanValidator 検証をスキップする他の推奨方法はありますか?
私はprimefaces 3.2.4、Mojarra 2.1.2、およびTomcat 6.0.36を使用しています。
ありがとう!