- 论坛徽章:
- 0
|
1、 在struts-config下添加如下代码:
xml version="1.0" encoding="UTF-8"?>
DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">
struts-config>
form-beans >
form-bean name="myForm" type="org.apache.struts.validator.DynaValidatorForm">
form-property name="uid" type="java.lang.String"/>
form-property name="password" type="java.lang.String"/>
form-property name="name" type="java.lang.String"/>
form-bean>
form-beans>
global-exceptions />
global-forwards />
action-mappings >
action
attribute="myForm"
input="/user.jsp"
validate="true"
name="myForm"
path="/user"
scope="request"
type="com.sailor.struts.action.UserAction"
>
forward
name="success"
path="/view.jsp"
redirect="true" />
forward
name="fail"
path="/error.jsp"
redirect="true" />
action>
action-mappings>
message-resources parameter="com.sailor.struts.ApplicationResource_zh_CN"/>
plug-in className="org.apache.struts.validator.ValidatorPlugIn">
set-property property="pathnames"
value="/org/apache/struts/validator/validator-rules.xml,
/WEB-INF/validation.xml"/>
plug-in>
struts-config>
2 在WEB-INF下新建一个validation.xml
DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">
form-validation>
formset>
form name="myForm">
field property="uid" depends="required">
arg key="uid"/>
field>
field property="password" depends="required,maxlength,minlength">
arg key="password"/>
arg key="${var:minlength}" name="minlength" resource="false"/>
arg key="${var:maxlength}" name="maxlength" resource="false"/>
var>
var-name>minlengthvar-name>
var-value>6var-value>
var>
var>
var-name>maxlengthvar-name>
var-value>10var-value>
var>
field>
form>
formset>
form-validation>
3 在国家化标签中添加如下:
![]()
4 在user.jsp中添加
经过以上步骤就可以实现简单的用户身份验证。
所有的表单都是继承自ActionForm类,它有两个直接子类,一个是ValidatorForm类,一个是DynaActionForm类。ValidatorForm类还有一个子类是ValidatorActionForm类,这两个类都可以和Validator框架一起工作验证表单内部的数据,但是必须手动创建他们的子类,至于这两个类的区别,后面再说。DynaActionForm类就是可以动态配置表单的类了,但是它不能和Validator框架一起验证表单数据,还需要手动实现子类,并重写reset和validate方法验证表单数据,它也有子孙类DynaValidatorForm和DynaValidatorActionForm类,其中前者是后者的父类,这两个类就是可以动态配置表单并且可以和Validator框架一起工作验证表单数据的类。下面说说(Dyna)ValidatorFOrm和(Dyna)ValidatorActionForm的区别,它们的类名差了Action字样,区别就是Validator的验证时针对表单还是Action,不含有Action字样的类是完全针对表单进行验证,即使这个表单和多个Action关联,含有Action字样的类针对Action关联的表单进行验证。配置Validator的时候需要配置form标签,这个标签有个name属性,如果是针对表单验证,这里就写表单的那么属性,如果是针对Action验证,这就写Action的path属性。
动态表单需要编写任何代码,只需要配置struts-config.xml文件即可,下面是一个动态表单的例子:
form-beans>
form-bean name="logonForm" type="org.apache.struts.validator.DynaValidatorForm">
form-property name="username" type="java.lang.String"/>
form-property name="pwd" type="java.lang.String"/>
/form-bean>
/form-beans>
以上代码配置了一个包含连个属性的表单。
--------------------------------------------------------------------------------
validator-rules.xml文件配置验证规则,validation.xml文件配置表单的那些字段需要验证,并使用那些验证规则,下面是针对上面表单的验证配置:
form-validation>
formset>
form name="logonForm">
field property="username" depends="required,minlength">
arg0 key="username" resource="false"/>
arg1 name="minlength" key="${var:minlength}" resource="false"/>
var>
var-name>minlength/var-name>
var-value>5/var-value>
/var>
/field>
field property="pwd" depends="required,minlength">
arg0 key="pwd" resource="false"/>
arg1 name="minlength" key="${var:minlength}" resource="false"/>
var>
var-name>minlength/var-name>
var-value>5/var-value>
/var>
/field>
/formset>
/form-validation>
数值在一定范围内
field property="age" depends="required,intRange">
arg0 key="age" resource="false"/>
arg1 name="intRange" key="${var:min}" resource="false"/>
arg2 name="intRange" key="${var:max}" resource="false"/>
var>
var-name>min/var-name>
var-value>18/var-value>
/var>
var>
var-name>max/var-name>
var-value>36/var-value>
/var>
/field>
日期格式
field property="date" depends="required,date">
arg0 key="date" resource="false"/>
var>
var-name>datePattern/var-name>
var-value>yyyy-MM-dd/var-value>
/var>
/field>
邮件格式
field property="email" depends="required,email">
arg0 name="required" key="email" resource="false"/>
arg0 name="email" key="email" resource="false"/>
/field>
Struts 1.2.7的validator-rules.xml文件原始配置和api有些出入,需要在某些规则的org.apache.struts.action.ActionMessages
字段类型后添加
org.apache.commons.validator.Validator
才能正常使用,
--------------------------------------------------------------------------------
自定义验证规则:
编写类文件,方法名必须是静态,而且注意线程安全,验证方法签名如下:
public static java.lang.Object validateXXX( java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest);
Object 表示验证在此JavaBean对象上进行,相当于表单对象
ValidatorAction 表示当前所执行的 ValidatorAction
Field 被验证的字段对象,表但内的字段
ActionMessages 验证失败,新增ActionError对象到此对象中
HttpServletRequest 请求对象
然后在validator-rules.xml文件中插入验证规则,在validation.xml文件中使用验证规则。
body>
html:form action="/reg" focus="uname" onsubmit="return validateRegForm(this)">
uname : html:text property="uname"/>br/>
email : html:text property="email"/>br/>
html:submit/>html:reset/>
/html:form>
html:javascript formName="regForm"/>
/body>
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/55983/showart_521877.html |
|