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>
エラーがあるとこんな感じにある。