Struts1.3的验证
使用Struts1.3有两个途径进行验证:通过actionForm的validate方法;使用Validation验证框架。
首先学习通过validate方法:
Struts1.3的formBean必须继承ActionForm类,这个类有一个方法:public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)。我们把验证逻辑写在这里。可以直接调用formBean的属性,因为此时属性已经装填。
ActionErrors相当于一个Map,它有一个方法add(String key,ActionMessage message)。第一个参数表示在JSP中<html:errors property="">引用的值;第二个参数是ActionMessage对象。
ActionMessage类读取一个properties文件,来获取信息。它的构造方法总有一个String类型的参数:ActionMessage(String key),这个参数即是属性文件的键。
我们需要在struts-config.xml中配置这个属性文件,使用<message-resources>。而且,我们需要在<action>中指定input属性,表示输入错误时返回的页面。
下面举个例子:
formBean:
View Code
1 public class UserActionForm extends ActionForm {
2 private String username;
3 private String password;
4
5 @Override
6 public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
7 ActionErrors errors = new ActionErrors();
8
9 if(username.trim().equals("")) {
10 ActionMessage message = new ActionMessage("error.username.blank");
11 errors.add("usernameError", message);
12 }
13
14 if(password.trim().equals("")) {
15 errors.add("passwordError",new ActionMessage("error.password.blank"));
16 }
17 return errors;
18 }
简单的验证,只是为了演示过程。(省略了getter和setter)
属性文件:
View Code
1 error.username.blank=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A
2 error.password.blank=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A
struts-config.xml:
View Code
1 <message-resources parameter="errorMessages" />
JSP文件:
View Code
1 <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
2
3 <form action="Login.do">
4 用户名:<input type="text" name="username">
5 <html:errors property="usernameError"></html:errors><br/>
6 密 码:<input type="password" name="password">
7 <html:errors property="passwordError"></html:errors><br/>
8 <input type="submit">
总结:使用validate方法进行验证时,
- 覆盖validate方法;
- 创建属性文件;
- 在struts-config.xml中声明属性文件,指定input属性;
- 创建ActionMessage,并且添加到ActionErrors;
- 在JSP页面中输出错误信息。
使用Validation验证框架:
1.formBean不能再继承ActionForm了,需要继承ValidatorForm类。此类已经重写了validate方法,因此,继承它不需要也不能覆盖validate方法。
2.因为Validation框架是Struts1的一个插件,因此需要在struts-config.xml中配置它,使用<plug-in>。
3.复制核心jar文件中的validator-rules.xml至<plug-in>中指定的路径。
4.创建validator.xml文件,它描述了哪些formBean需要验证以及验证规则。
5.最后需要一个properties文件,描述错误消息。
示例:
struts-config.xml:
View Code
1 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
2 <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validator.xml"/>
3 </plug-in>
validator.xml:
View Code
1 <form-validation>
2
3 <formset>
4
5 <form name="LoginFormValidate">
6 <field property="username" depends="required,maxlength,minlength">
7 <msg name="required" key="error.username.blank"/>
8 <msg name="maxlength" key="error.username.maxLength"/>
9 <msg name="minlength" key="error.username.minLength"/>
10
11 <var><var-name>maxlength</var-name><var-value>16</var-value></var>
12 <var><var-name>minlength</var-name><var-value>6</var-value></var>
13
14 <arg name="maxlength" key="${var.maxlength}" position="0" resource="false"/>
15 <arg name="minlength" key="${var.minlength}" position="0" resource="false"/>
16 </field>
17 </form>
18
19 </formset>
20
21 </form-validation>
总结:使用Validation验证框架时,
- formBean继承ValidatorForm;
- 配置struts-config.xml的validation插件;
- 创建validator-rules.xml和validator.xml;
- 创建属性文件。
重点是validator.xml的配置。待续……


浙公网安备 33010602011771号