メソッドバリデータと似たようなものとして、validatorタグを利用したカスタムバリデータを作成できる。これを作っておけば、カスタムバリデータタグに応用することができる。
jsf-api.jarをみるとバリデータはvalidatorパッケージ以下に配置している。
バリデータクラス作成
package com.daipresents.kingdom.validator; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.component.UIInput; import javax.faces.context.FacesContext; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; public class LengthValidator implements Validator { public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException { String str = arg2.toString(); if(str.length() < 4){ throw new ValidatorException(new FacesMessage("ログイン情報が不正です。")); } } }
faces-confix.mlへの登録
<validator> <validator-id>LengthValidator</validator-id> <validator-class> com.daipresents.kingdom.validator.LengthValidator </validator-class> </validator>
JSPで使用
<div> <h:messages /> </div> <div> <h:outputText value="ユーザID" /> <h:inputText value="#{Login.userID}"> <f:validator validatorId="LengthValidator"/> </h:inputText> </div>
実行するとこんな感じ。