jsf学习笔计自定义验证器

来源:互联网 发布:微信 矩阵 小矩阵 编辑:程序博客网 时间:2024/05/24 06:09

自定义验正方法

      1,要继承自 Validator 并要实现方法 validate

如:

public class TestValidator implements Validator {

   

  /**

   * 验证的方法

   * 如果抛出ValidatorException异常,验证不通过

   * else 验证通过

   */

  public void validate(FacesContext context, UIComponent component, Object obj)

       throws ValidatorException {

    

     if (obj != null) {

       String value = (String) obj;

// 这是判断是否是xiaoming

       if ("xiaoming".equals(value))

         throw new ValidatorException(new FacesMessage("不能是xiaoming"));

 

     }

 

  }

}

2,创建一个faces-config.xml类型 的文件 指的是<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

 

<faces-config>

</faces-config>相同

配制验证器如:

<!-- 配置自定义的验证器 -->

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

 

<faces-config>

  <validator>

//id为输入框要引用的名字

如: <f:validator validatorId="testValidator" /> 必面放在输入框里面如

 

name<h:inputText id="name" value="#{TestAction.name}" required="true">

                  <!-- 使用自定义的验证器 -->

                  <f:validator validatorId="testValidator" />

              </h:inputText>

              <h:message for="name"></h:message>

 

     <validator-id>testValidator</validator-id>

 

//Class为全路径名

  <validator-class>

       com.accp.validator.TestValidator

     </validator-class>

  </validator>

</faces-config>

3,web-info web.xml文件里配制

如:

        

<!-- 指定剩余的配置文件的路径

这里指的是如果文件名是 faces-config.xml文件名的说就不需要配制

-->

  <context-param>

    <param-name>javax.faces.CONFIG_FILES</param-name>

    <param-value>/WEB-INF/validator.xml,/WEB-INF/faces-backbean.xml</param-value>

  </context-param>

 Web.mxl文件里有个属性是可以指定bean的范围

如:

  <!-- 指定JSF组件状态保存的位置

      服务器端server 默认值

      客户端client

   -->

  <context-param>

    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>

    <param-value>client</param-value>

  </context-param>

这个的话是用jsf必须要配制的

 

  <servlet>

    <servlet-name>Faces Servlet</servlet-name>

    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

    <load-on-startup>0</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>Faces Servlet</servlet-name>

    <url-pattern>*.faces</url-pattern>

  </servlet-mapping>