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);

你可能感兴趣的:(bean,xml,JSF)