JavaBeansのメソッドを利用してバリデーションを実行することも可能。この場合はvalidate属性を利用する。
メソッドの作成
LoginというJavaBeanにバリデータメソッドを追加する。
/**
* 入力チェックを行います。
*/
public void validateInputData(FacesContext context,
UIComponent component, Object value){
if(value == null){
context.addMessage(
component.getClientId(context),
new FacesMessage("ユーザIDは必ず入力してください。"));
}
String str = value.toString();
if("".equals(str)){
context.addMessage(
component.getClientId(context),
new FacesMessage("ユーザIDは必ず入力してください。"));
((UIInput)component).setValid(false);
}else{
if(str.length() < 4){
throw new ValidatorException(new FacesMessage("ログイン情報が不正です。"));
}
}
}
このサンプルではnullチェックを行っているが、入力欄に何も入力せずにsubmitして
もvalidator属性で指定したバリデータは動かないみたい。よって、必須かどうかの確認は「required=”true”」などrequired
属性をUIコンポーネントに指定する。
よって必須チェックバリデータは作れない??
JSPで使う
JSP上のUIコンポーネントにvalidate属性を追加する。
<div>
<h:messages />
</div>
<div>
<h:outputText value="ユーザID" />
<h:inputText value="#{Login.userID}" validator="#{Login.validateInputData}">
</h:inputText>
</div>
エラーがあるとこんな感じにある。
