JSF中的数据验证(1,前台验证 2,使用已有验证器 3,通过backing bean 4,自定义验证器)

1,


2,


3,通过backing bean进行验证

首先要在后台backing bean写相应的验证方法。

如下例子是为了验证输入数据是否是由数字和字母组成。
 
java 代码
 
  1. public void validateWord(FacesContext context, UIComponent toValidate, Object value) {  
  2.      String word = (String) value;//得到输入的直  
  3.      String reg = "^[A-Za-z0-9]+$";//根据验证要求写出相应正则表达式(各种验证表达式见本文最后)  
  4.      PatternCompiler compiler = new Perl5Compiler();  
  5.      Pattern pattern;  
  6.      try {  
  7.          pattern = compiler.compile(reg);  
  8.   
  9.      PatternMatcher matcher = new Perl5Matcher();  
  10.      if(!matcher.contains(word, pattern)) {//判断是否匹配,如果不匹配输出相应错误信息  
  11.          ((UIInput)toValidate).setValid(false);  
  12.          FacesMessage message = new FacesMessage("Value accepts alphanumeric
  13.                                  without space and symbols!");  
  14.     //FacesMessage message = new FacesMessage("error message");     
  15.     //context.addMessage(context.getViewRoot().findComponent("pForm:sizeLength")
  16.       .getClientId(context),message);  
  17.     //以上注释部分的意思是说将错误信息存储到页面id="pForm:sizeLength"的控件里而非当前控件  
  18.          context.addMessage(toValidate.getClientId(context), message);  
  19.      }  
  20.      } catch (MalformedPatternException e) {  
  21.          // TODO Auto-generated catch block  
  22.          e.printStackTrace();  
  23.      }  
  24.  }  


其次便是在页面调用该验证方法,例子如下:

JSF 代码
 
  1. <h:inputText value="#{containerListBean.container.assetCode}"   
  2. validate="#{containerListBean.validateWord}" styleClass="inputTextBox">  
  3. <h:message for="AssetCode" styleClass="errorMessage"></h:message>  


OK了,其他的就不用说了。



4,自定义验证器





参开资料:正则表达式

你可能感兴趣的:(bean,正则表达式,JSF)