JSF自定义验证器功能

JSF提供自定义验证器的功能,使开发更加灵活,而且验证器组件还可以重用。 的功能,使开发更加灵活,而且验证器组件还可以重用。
       一般有两种方式定义验证器:
1.       实现javax.faces.validator.Validator接口的validate方法,如果验证错误,则丢出一个ValidatorException,它接受一个FacesMessage 对象,这个对象接受三个参数,分别表示讯息的严重程度(INFO、 WARN、ERROR、FATAL)、讯息概述与详细信息内容,这些信息将可以使用<h:messages>或<h: message>标签显示在页面上。
以下是一个例子:
public void validate(FacesContext ctx,UIComponent component,Object object) throws ValidatorException{
        String password = (String) object;
        if(!password.matches(".+[0-9]+")){
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,"密码必须是字符和数字组合","密码必须是字符和数字组合");
            throw new ValidatorException(message);
        }        
}
然后在faces-config.xml文件声明这个验证器:
<validator>
    <validator-id>validateUserpassword</validator-id>
    <validator-class>validator.ValidateUserpassword</validator-class>
</validator>
JSF页面:
                        <h:inputSecret id="addUserpassword"
                                    value="#{addUserForm.userpassword}"
                                    required="true">
                        <f:validator validatorId="validateUserpassword"/>
                        </h:inputSecret>
                        <a4j:outputPanel ajaxRendered="true">
                            <h:message style="color:red;" for="addUserpassword"/>
                        </a4j:outputPanel>
要注意validateID值要对应。
2.         在backingbean里面实现自定义验证。
Backingbean:
public void validate() throws ValidatorException{
        if(!userpassword.matches(".+[0-9]+")){
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,"密码必须是字符和数字组合","密码必须是字符和数字组合");
            throw new ValidatorException(message);
        }        
}
JSF页面:
                        <h:inputSecret id="addUserpassword"
                                    value="#{addUserForm.userpassword}"
                                    required="true"
validator="#{addUserForm.validate}"/>
                        <a4j:outputPanel ajaxRendered="true">
                            <h:message style="color:red;" for="addUserpassword"/>
                        </a4j:outputPanel>
这种方法比较方便,不用在faces-config里面声明配置validator,但是不易重用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值