现在的位置: 首页 > 综合 > 正文

Struts2 的表单验证

2014年02月21日 ⁄ 综合 ⁄ 共 1882字 ⁄ 字号 评论关闭

一、Struts2输入校验介绍

 

Struts2的输入校验和类型转换都是对请求参数进行处理。

输入校验顾名思义就是请求参数是否能够满足一定的要求;

 

客户端校验&服务器端校验

客户端校验是指在浏览器这端通过Javascript进行初步校验,为了减轻服务器端的负载;

服务器端校验是校验数据的最后一道防线;

 

在Struts2中,数据校验不需要写任何代码,只需要一个配置文件,配置校验的条件就可以了,非常简单;因此数据校验文件是数据校验的最重要的内容;

 

二、数据校验规则文件

 

1.数据校验规则文件规则:

 

1.此文件中规定了参数的一些校验条件;

2.可以包括字段型校验器和非字段型校验器;

3.命名规则:ActionName-validation.xml,其中ActionName是Action类的名字;

4.每个Action都有一个validation文件,规则文件放在和Action同目录下;

5.在前面我们讲到的配置逻辑action中,如果需要对某个逻辑Action配置数据校验文件,则命名规则为:ActionName-LogicActionName-validation.xml;

6.注意:当需要对逻辑action进行校验时,如果存在一般形式的ActionName-validaton.xml文件,则也会对此逻辑Action进行校验;

7.输入校验失败后,和类型转换一样,会将错误封装成fieldError,并放入Action Context中,因此在JSP中添加<s:fielderror/>可显示错误,此内容也是我们在数据校验文件中配置的;

8.当输入校验失败后,和类型转换一样,返回逻辑视图为input,因此在struts.xml中必须配<result name="input"></input>

9.输入校验失败后,struts表单标签也会自动输出错误提示;

 

字段型校验器&非字段型校验器

 

字段型校验器:以每个Action属性为一个单位进行编写,即以如下风格编写:

属性1

        规则1

        规则2

属性2

        规则1

        规则2

 

 

非字段型校验器:以规则为一个单位,以如下风格编写:

规则1

        属性

规则2

        属性

规则3

        属性

 

2.数据校验文件内容

 

1.数据校验文件以<validators>为根元素;

2.字段型校验器是以属性为单位的,内容模板:

 

[html] view
plain
copy

  1. <validators>  
  2.     <field name="">  
  3.         <field-validator type="">  
  4.             <param name=""></param>  
  5.             <message></message>  
  6.         </field-validator>  
  7.     </field>  
  8.   
  9. </validators>  

 


3.非字段型校验器是以校验器为单位的,内容模板:

 

[html] view
plain
copy

  1. <validator type="">  
  2.         <param name="fieldName"></param>  
  3.         <param name=""></param>  
  4.         <message></message>  
  5. </validator>  

 

 

代码示例:

 

此段代码中分别对字符串、日期、整型、email进行数据校验;

Validation01Action.java

 

[java] view
plain
copy

  1. package org.validation.action;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import com.opensymphony.xwork2.ActionSupport;  
  6.   
  7. public class Validation01Action extends ActionSupport {  
  8.     private String name;  
  9.     private String email;  
  10.     private int age;  
  11.     private Date date;  
  12.     public String execute()throws Exception{  
  13.         return SUCCESS;  
  14.     }  
  15.     public String getName() {  
  16.         return name;  
  17.     }  
【上篇】
【下篇】

抱歉!评论已关闭.