登录程序举例 环境:myeclipse+tomcat5.0 代码 login.jsp <html> <head> <title>JSP for LoginForm form</title> </head> <body> <html:form action="/login" method="POST"> <bean:message key="username"/> : <html:text property="username"/><html:errors property="username"/><br/> <bean:message key="password"/> : <html:password property="password"/><html:errors property="password"/><br/> <bean:message key="age"/> : <html:text property="age"/><html:errors property="age"/><br/> <bean:message key="email"/> : <html:text property="email"/><html:errors property="email"/><br/> <html:submit/><html:cancel/> </html:form> </body> </html> loginForm private String password; /** age property */ private String age; /** username property */ private String username; /** email property */ private String email; getter和setter方法省略 loginAction方法省略(实现验证和它无关) validator.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"> <form-validation> <formset> <form name="loginForm"> <field property="username" depends="required"> <arg0 key="username"/> </field> <field property="password" depends="required,maxlength,minlength"> <arg0 key="password"/> <arg1 name="maxlength" key="${var:maxlength}" resource="false"/> <arg1 name="minlength" key="${var:minlength}" resource="false"/> <var> <var-name>maxlength</var-name> <var-value>12</var-value> </var> <var> <var-name>minlength</var-name> <var-value>6</var-value> </var> </field> <field property="age" depends="intRange"> <arg0 key="age"/> <arg1 key="${var:min}" resource="false"/> <arg2 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>30</var-value> </var> </field> <field property="email" depends="email"> <arg0 key="email"/> </field> </form> </formset> </form-validation> validator-rules.xml <form-validation> <global> <validator name="required" classname="org.apache.struts.validator.FieldChecks" method="validateRequired" methodParams="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" msg="errors.required"/> <validator name="minlength" classname="org.apache.struts.validator.FieldChecks" method="validateMinLength" methodParams="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" depends="" msg="errors.minlength" jsFunction="org.apache.commons.validator.javascript.validateMinLength"/> <validator name="maxlength" classname="org.apache.struts.validator.FieldChecks" method="validateMaxLength" methodParams="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" depends="" msg="errors.maxlength" jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/> <validator name="intRange" classname="org.apache.struts.validator.FieldChecks" method="validateIntRange" methodParams="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" depends="integer" msg="errors.range"/> <validator name="email" classname="org.apache.struts.validator.FieldChecks" method="validateEmail" methodParams="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" depends="" msg="errors.email"/> </global> </form-validation> ApplicationResources.properties已经利用native2ascii编码过 编码为utf-8 # Resources for parameter 'com.struts_zh.struts.ApplicationResources' # Project struts_ZH username=/u59d3/u540d password=/u5bc6/u7801 age=/u5e74/u9f84 email=/u7535/u5b50/u90ae/u7bb1 #/u62a5/u9519/u63d0/u793a/u4fe1/u606f errors.email={0} /u4e0d/u662f/u6b63/u786e/u7684email/u5730/u5740 errors.maxlength={0} /u5fc5/u987b/u5c0f/u4e8e12/u4f4d/u7684/u5b57/u7b26 errors.minlength={0} /u5fc5/u987b/u5927/u4e8e6/u4f4d/u7684/u5b57/u7b26 errors.range={0} /u5fc5/u987b/u5927/u4e8e{1}/u5c0f/u4e8e{2} errors.required={0}/u5fc5/u987b/u8f93/u5165 struts-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans > <form-bean name="loginForm" type="com.struts_zh.struts.form.LoginForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request" validate="true" type="com.struts_zh.struts.action.LoginAction" /> </action-mappings> <message-resources parameter="com.struts_zh.struts.ApplicationResources" /> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> </struts-config> 搞定! 下面介绍一下validation.xml配置文件的标签: <form-validation></form-validation>是总框架 <formset></formset>是对Form里的数据进行配置 <form name="ActionForm对应的名称"></form>对一个ActionForm里的数据进行验证配置 <field property="ActionForm里的属性名" depends="验证规则,可以是Validation-rules里定义好的也可以是自定义的验证规则">这里配置一个属性的验证内容 <arg0 name="对应的验证规则名称" key="可以直接填入数值,也可填入变量表达式:${var:变量名}" resource="true/false"(代表是否从资源文件中读取信息,否则Key的值以参数的形式返回)> <var></var>定义一个变量的标签体,可以在里面具体设置变量的名称以及数值 <var-name>对应Key里定义的变量名称</var-name> <var-value>值</var-value> <msg name="对应的验证规则名称" key="资源文件中定义的变量名称">这里定义了信息变量后,会默认定义的信息变量。 在验证规则中大部分可以使用已经预定义好的规则,它们在validator-rules.xml里,当然我们自己也可以定义规则。
其实,这个文件名可以是任意的,可以起成别的名字,比如:validators.xml,不过,也要相应修改struts-config.xml文 件中的加入validator框架PlugIn中的value属性。这个value属性用来指定validator-rules文件和具体的验证文件。
1)根元素: validators.xml文件的“根元素(Root)”是form-validation, 意味着整个文件的内容包含在“<form-validation>”和“</form-validation>”之间,
2)元素global: 这个东西包含constant子元素,用来定义一个全局的“验证限制”, 以便在这个文件的其他地方使用这些验证规则。 field元素定义了对特定属性的验证