JavaEE 7をやってみよう。 validator その2
その1のつづき。
自作のバリデータクラスを使う方法について。
バリデータクラスを作るには、
javax.faces.validator.FacesValidator;
を実装したクラスを作成すればよい。
そして、@FacesValidatorアノテーションを付け、
名前を決めてあげれば良い。
こんな感じに。
package validator; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.FacesValidator; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; @FacesValidator("simpleTextValidator") public class SimpleTextValidator implements Validator { public SimpleTextValidator() { } @Override public void validate(FacesContext fc, UIComponent uic, Object value) throws ValidatorException { String input = (String)value; if ( input == null || input.equals("") ) { throw new ValidatorException(new FacesMessage("必須入力です")); } if ( input.length() >= 16 ) { throw new ValidatorException(new FacesMessage("15文字以内です")); } } }
Validatorインターフェイスがもつ、validateメソッドを実装してやればよい。
valueには、検査するオブジェクトが入ってくる。(大抵Stringだろう)
あとは好きにチェックロジックを書けばよいわけだ。
呼び出し側としては、@FacesValidatorアノテーションで付けた名前を、
チェック対象タグのvalidator属性に指定すれば良い。
チェック実行とエラーメッセージの描画については、validatorタグと一緒だ。
<h:outputLabel value="Use Validator Class" /><br /> <h:inputText id="text6" value="#{inputDataV.text6}" validator="simpleTextValidator" > <f:ajax render="text6error" /> </h:inputText> <h:message for="text6" id="text6error" style="color: red" />
実行結果はこんな感じ。
その3へつづく。