JSF学习笔记三

标准验证器:
<h:inputText value="#{user.name}">
<f:validateLenght mininum="6" />
</h:inputText>
当错误发生时,相关的错误会被收集起来,我们使用<h:messages>把错误一次性显示出来。
JSF提供了三种标准验证器:<f:validateDoubleRange><f:validateLongRange><f:validateLength>

自定义验证器:
实现javax.faces.validator.Validator接口
例如:

public class MyValidator implements Validator {
public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
throws ValidatorException {
String password = (String)arg2;
if(password.length() < 6){
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"字符长度小于6",
"字符长度不得小于6");
throw new ValidatorException(message);
}
if(!password.matches(".+[0-9]+")){
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"密码必须包括字符与数字",
"密码必须是字符加数字组成");
throw new ValidatorException(message);
}
}
}

然后注册验证器(faces-config.xml):
<validator>
<validator-id>com.zdx.Password</validator-id>
<validator-class>com.zdx.MyValidator</validator-class>
</validator>

使用自定义验证器:
方法一:使用<f:validator>标签
<h:inputSecret>
<f:validator validaor-id="com.zdx.Password"/>
</inputSecret>
方法二:
直接在Bean中定义相关的validate方法,如下使用:
<h:inputSecret value="#{user.password}" required="true" validator="#{user.validate}">


错误信息处理:
当发生错误时,一些预定义信息会显示,但我们可以修改显示的信息,提供一个信息资源文件message.properties。
<message-bundle>message</message-bundle>
我们可以可以在程序中取得信息资源文件的内容:

public class getResource {
public void getRes(FacesContext context,
UIComponent component,
Object obj){
//取得应用程序代表对象
Application application = context.getApplication();
//取得信息文件主名称
String messageFileName = application.getMessageBundle();
//取得当前local对象
Locale local = context.getViewRoot().getLocale();
//取得信息绑定ResourceBundle对象
ResourceBundle rsBundle = ResourceBundle.getBundle(messageFileName,local);
String message = rsBundle.getString("message1");
FacesMessage faceMessage = new FacesMessage(FacesMessage.SEVERITY_ERROR,message,message);
}

如果资源文件中有{0},{1}等参数,则

String message2 = rsBundle.getString("message2");
String[] params = {"param1","param2"};
message2 = java.text.MessageFormat.format(message, params);
FacesMessage faceMessage2 = new FacesMessage(FacesMessage.SEVERITY_ERROR,message,message);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值