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的配置。待续……

 

 

 

posted @ 2012-03-18 14:03  我愿为蛹  阅读(910)  评论(0)    收藏  举报