自定义验正方法
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>