Struts2 表单验证两种方法

在平常开发中,我经验使用struts2 表单验证是必不少的。今天我和大家分享两种表单验证。

一、继承ActionSupport类实现检验方法

     ActionSupport是一个工具类,它已经实现了Action接口,除此之外,它还实现了Validateable接口,提供了数据校验功能,通过继承该ActionSupport类,可以简化Struts2的Action的开发。

    在Validatable接口中定义了一个validate()方法,重写该方法,如果校验表单输入域出现错误,则将错误添加到ActionSupport类的fieldErrors域中,然后通过,OGNL表达式负责输出。

   为了让Struts2增加输入数据校验的功能。LoginAction.java类需要继承子ActionSupport,并重写validate()方法,如重写validate()方法,程序如下:

    /**
  * 验证
  */
    public void validate()
    {
     if(name==null||name.equals(""))
     {
      addFieldError("name", getText("用户名不能为空"));
     }
     if(age==null||age.equals(""))
     {
      addFieldError("age", getText("年龄不能为空"));
     }
    }

   该类重写了validate()方法,该方法会在执行系统的execute方法之前执行,

二、基于XWork的Validator框架的验证

 上面的输入校验是通过重ActionSupport类的validate()方法实现的,这种方法虽然不错,但需要重写大量的validate()方法

 类似于struts1,struts2也允许通过定义配置文件来完成数据校验。struts2的校验框架实际上是基于XWork的Validator()框架,其校验器定义文件位于Xwork的java包的com/opensymphony/xwork2/validator/validators/default.xml中

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE validators PUBLIC
3 "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
4 "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">
5 <!-- START SNIPPET: validators-default -->
6 <validators>
7 <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
8 <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
9 <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
10 <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
11 <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
12 <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
13 <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
14 <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
15 <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
16 <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
17 <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
18 <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
19 <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
20 </validators>
21 <!-- END SNIPPET: validators-default -->

   要时行 Action表单数据的验证,就需要为Action创建校验规则文件。该文件的命名规则应该遵守如下规则:ActionName-validation.xml:其ActionName就是需要校验的Action的类名.因此上面的规则应该遵守这项规则。配制文件如下 :

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
3 "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
4 <validators>
5 <field name="name1">
6 <field-validator type="requiredstring">
7 <param name="trim">true</param>
8 <message>用户名不能为空</message>
9 </field-validator>
10 <field-validator type="stringlength">
11 <param name="trim">true</param>
12 <param name="maxLength">8</param>
13 <param name="minLength">3</param>
14 <message>用户名长度应该在${maxLength}到 ${minLength}之间 </message>
15 </field-validator>
16 </field>
17 <field name="age1">
18 <field-validator type="requiredstring">
19 <param name="trim">true</param>
20 <message>年龄不能为空</message>
21 </field-validator>
22 </field>
23 </validators>

工程源代码下载地址: http://download.csdn.net/source/3555952

希望提点意见,谢谢!!!

你可能感兴趣的:(struts2)