JSF1.1 メソッドバリデータ

感想おまちしてます!

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>

エラーがあるとこんな感じにある。

pic20080511_004341