博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2学习笔记(九)——数据校验
阅读量:6501 次
发布时间:2019-06-24

本文共 5364 字,大约阅读时间需要 17 分钟。

Struts2的数据校验属于服务器端校验,Struts2 支持校验方式 :

  • 手动校验(代码校验) :在服务器端通过编写java代码,完成数据校验
  • 自动校验(配置校验) :XML配置校验(主流) 和 注解配置校验

1、手动校验

   1)Struts2的手动校验步骤:

  •   首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法;
  •   要继承ActionSupport类或者实现Validateable接口;
  •   重写Validateable接口的validate()方法,需要通过addFieldError(fieldName, errorMessage)方法来添加校验提示,fieldName为错误提示字段,errorMessage为错误提示信息,在jsp页面需要通过Struts2的<s:fielderror/>标签来提示添加的信息,该标签有个name属性,值为addFieldError方法中的fieldName,当添加了校验信息,Struts2框架会返回到name值为"input"的<result/>设置的视图中;

  2)下面我们通过一个例子来演示手动校验功能:

Action类:

1 public class ValidateAction extends ActionSupport { 2     private String name; 3      4     @Override 5     public void validate() { 6         if (name == null || "".equals(name)) { 7             this.addFieldError("name", "姓名不能为空"); 8         } 9     }10     11     @Override12     public String execute() throws Exception {13         return SUCCESS;14     }15     16     public String getName() {17         return name;18     }19     20     public void setName(String name) {21         this.name = name;22     }23 }

struts.xml配置文件:

1 
2
3 4
5
6
/success.jsp
7
8
/input.jsp
9
10
11 12

jsp页面:

1 2  
3
4 姓名:
5
6
7

当第一次加载jsp页面时不会显示校验信息:

当在表单中不添加任何信息直接点击提交按钮时会显示设置的校验信息:

2、自动校验(XML配置文件方式)

  1)XML配置文件方式数据校验步骤:

  • 首先要从页面中获取对应的标签name属性的值,在动作类action中声明同名的属性,提供get和set方法;
  • 创建一个XML格式验证文件,文件的命名方式:ActionClassName-validation.xml,ActionClassName指的是Action类的名称,该文件需要和Action类放在同一目录下;
    • XML格式验证文件的内容格式:
      1 
      2 5
      6
      7
      10
      11
      14
      15
      16
      true17
      20
      用户名不能为空
      21
      22
      23

       

    • Struts2的内置校验器规则在路径:xwork-core-x.x.x.jar中com.opensymphony.xwork2.validator.validators包的default.xml文件:

      1 
      2
      6
      7
      8
      11
      12
      16
      17
      21
      22
      26
      27
      33
      34
      38
      39
      42
      43
      46
      47
      48
      49
      50
      51
      55
      56
      59
      60
      65
      66
      70
      71
      72

  2)下面我们通过一个例子来演示XML配置文件方式数据校验功能:

Action类:

1 public class ValidateAction extends ActionSupport { 2     private String name; 3      4     @Override 5     public String execute() throws Exception { 6         return SUCCESS; 7     } 8      9     public String getName() {10         return name;11     }12     13     public void setName(String name) {14         this.name = name;15     }16 }

struts2配置文件:

1 
2
3 4
5
6
/success.jsp
7
8
/input.jsp
9
10
11 12

在Action类相同目录下新建XML格式验证文件:ValidateAction-validation.xml:

1 
2
3
4
true5
姓名不能为空
6
7
8

jsp页面:

1 2  
3
4 姓名:
5
6
7

当第一次加载jsp页面时不会显示校验信息:

当在表单中不添加任何信息直接点击提交按钮时会显示设置的校验信息:

如果要对指定方法进行验证的话,XML验证文件的命名方式:ActionClassName-ActionName-validation.xml,ActionName对应的是struts.xml文件对应的action标签的name属性的值。

3)visitor验证规则示例

vsitor校验器主要用于校验Action里的复合类型、数组类型或者集合类型,如一个Action里面包含了Person类型的属性,需要验证Person类型的name属性不能为空。

  1)新建Person类:

1 public class Person { 2     private String name; 3  4     public String getName() { 5         return name; 6     } 7  8     public void setName(String name) { 9         this.name = name;10     }11     12 }

  2)新建Action类:

1 public class ValidateAction extends ActionSupport { 2     private Person person; 3      4     @Override 5     public String execute() throws Exception { 6         return SUCCESS; 7     } 8  9     public Person getPerson() {10         return person;11     }12 13     public void setPerson(Person person) {14         this.person = person;15     }16     17 }

  3)新建visitor验证规则文件,该文件需要和Action类在同一目录下,命名规则和上面讲的一样ActionClassName-validation.xml,这里为ValidateAction-validation.xml:

1 
2
3
4
test 5
true 6
7
错误:
8
9
10

  4)新建Person类的name属性验证规则文件,该文件需要和Person类在同一目录下,命名规则为ClassName-context值-validation.xml,ClassName为要验证的类,context值为<param name="context">test</param>中的内容,-validation为固定内容,这里的文件名为Person-test-validation.xml:

1 
2
3
4
true5
姓名不能为空
6
7
8

  5)新建jsp页面:

1 2  
3
4 姓名:
5
6
7

当第一次加载jsp页面时不会显示校验信息:

当在表单中不添加任何信息直接点击提交按钮时会显示设置的校验信息:

转载于:https://www.cnblogs.com/xiaolongSunny/p/4656856.html

你可能感兴趣的文章
java ftpclient 代码_java后台代码ftpclient下载文件
查看>>
java mina 长连接_MINA实现TCP长连接(二)——服务端实现
查看>>
java数据库生成model_继承BaseModelGenerator 生成Model时添加数据库表字段 生成代码示例...
查看>>
https redirects java_java HttpURLConnection 得到 Redirect 转向的例子
查看>>
java读取html文件并替换_java读取html并替换相关内容
查看>>
java面向对象的概念_java面向对象(上)-- 面向对象的概念
查看>>
dbscan算法python实现_Python实现DBScan
查看>>
java智能聊天软件_Java使用青云客智能聊天接口做一个小助手
查看>>
java定义player类_Java自定义一个异常类NoThisSongException和Player类
查看>>
java 字符串 算法 面试题_java笔试手写算法面试题大全含答案
查看>>
java内部类访问外部类变量 final_Java内部类引用外部类中的局部变量为什么必须是final问题解析...
查看>>
java编程思想第四章_《JAVA编程思想》学习笔记——第四章 控制执行流程
查看>>
java 栈帧与类的关系_深入理解Java虚拟机之类运行时栈帧结构
查看>>
php中删除评论怎么做的,详解PHP如何实现评论回复删除功能
查看>>
macports 安装php,「macports」MacOS 中 MacPorts 安装和使用 - 金橙教程网
查看>>
php 审计 for linux,for linux是什么意思
查看>>
matlab里面连接器是什么,Oops - an error has occurred
查看>>
matlab建立桌面图标,在ubuntu16.04上创建matlab的快捷方式(实现方法)
查看>>
matlab 识别率,【caffe-Windows】识别率批量输出——matlab实现
查看>>
MATLAB里面的mghglobal函数,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
查看>>