カスタムバリデータ、つまり を実装するクラスを作成しjavax.faces.validator.Validator
、 で注釈を付けるだけ@FacesValidator("positiveNumberValidator")
です。
validate()
次のようにメソッドを実装します。
@Override
public void validate(FacesContext context, UIComponent component,
Object value) throws ValidatorException {
try {
if (new BigDecimal(value.toString()).signum() < 1) {
FacesMessage msg = new FacesMessage("Validation failed.",
"Number must be strictly positive");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
} catch (NumberFormatException ex) {
FacesMessage msg = new FacesMessage("Validation failed.", "Not a number");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
そして、facelets ページで次のように使用します。
<h:inputText id="percentage" value="#{lab.percentage}">
<f:validator validatorId="positiveNumberValidator" />
</h:inputText>
便利なリンク: http://www.mkyong.com/jsf2/custom-validator-in-jsf-2-0/