メソッドバリデータと似たようなものとして、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>
実行するとこんな感じ。
