博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据验证
阅读量:4918 次
发布时间:2019-06-11

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

(1)a:手工编写代码实现对Action中所有方法执行之前的验证

      很简单就是讲对应的Action类继承ActionSupport父类后并对父类中的validate方法进行重写即可;

      例如:

1 package com.bjyinfu.struts.actions; 2  3 import java.util.regex.Pattern; 4  5 import com.opensymphony.xwork2.ActionSupport; 6  7 public class LoginAction4 extends ActionSupport { 8  9     private String mobile;10     private String name;11     public String getMobile() {12         return mobile;13     }14     public void setMobile(String mobile) {15         this.mobile = mobile;16     }17     public String getName() {18         return name;19     }20     public void setName(String name) {21         this.name = name;22     }23     public String doFirst(){24         return "success";25     }26     public String doSecond(){27         return "success";28     }29     @Override30     public void validate() {31         //等于null是为了防止越过表单方法问32         if(name==null || "".equals(name.trim())){33             //底层有个集合叫fieldErrors.size()>0,说明有验证失败的信息,此时会自动跳转到input视图34             this.addFieldError("name", "用户名不能为空");35         }36         if(mobile==null || "".equals(mobile.trim())){37             this.addFieldError("mobile", "手机号不能为空");38         }else if(!Pattern.matches("^1[34578]\\d{9}", mobile)){39             this.addFieldError("mobile", "手机号不符合规定");40         }41     }42 }

 

    b:手工编写代码实现对Action中指定方法执行之前的验证

      修改被重写的方法名即可。例如:只要吧验证方法名改为validate+actionName;validate固定写法,actionName被指定的验证方法名;这样即可验证指定方法;

1 package com.bjyinfu.struts.actions; 2  3 import java.util.regex.Pattern; 4  5 import com.opensymphony.xwork2.ActionSupport; 6  7 public class LoginAction4 extends ActionSupport { 8  9     private String mobile;10     private String name;11     public String getMobile() {12         return mobile;13     }14     public void setMobile(String mobile) {15         this.mobile = mobile;16     }17     public String getName() {18         return name;19     }20     public void setName(String name) {21         this.name = name;22     }23     public String doFirst(){24         return "success";25     }26     public String doSecond(){27         return "success";28     }29 30     //这样只会在执行doFirst()方法之前进行验证,而执行doSecond()方法之前不会进行任何验证31     public void validateDoFirst() {32         //等于null是为了防止越过表单方法问33         if(name==null || "".equals(name.trim())){34             //底层有个集合叫fieldErrors.size()>0,说明有验证失败的信息,此时会自动跳转到input视图35             this.addFieldError("name", "用户名不能为空");36         }37         if(mobile==null || "".equals(mobile.trim())){38             this.addFieldError("mobile", "手机号不能为空");39         }else if(!Pattern.matches("^1[34578]\\d{9}", mobile)){40             this.addFieldError("mobile", "手机号不符合规定");41         }42     }43 }

若要将验证没通过的结果展现在对应视图上只需要在对应的input视图页面上引入struts2标签然后在添加<s:fielderror/>即可:

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3     <%@taglib uri="/struts-tags" prefix="s" %> 4  5  6  7 
8 My First Struts2 Project 9 10 11
12
13
14 用户名
15 手机号
16
17
18 19

 展示结果:

(2)a:通过xml配置文件的方法,对Action中的所有方法执行之前的验证:

  首先定义一个xml文件,文件名定义规则:ActionClassName-validation.xml;其中ActionClassName对应的是方法的类名,-validation.xml是固定的,并且此xml文件要放到与对应的方法的文件放到同一个包中,每个xml文件都有约束标签,大部分xml文件中的约束标签是从struts2-core.jar包中找的  图示:

而在此验证配置文件中的约束标签不是从此处找的,而是从xwork.core.jar中找的,图示:

 对应的Action方法:

1 package com.bjyinfu.struts.actions; 2  3  4 import com.opensymphony.xwork2.ActionSupport; 5  6 public class LoginAction5 extends ActionSupport { 7  8     private String mobile; 9     private String name;10     public String getMobile() {11         return mobile;12     }13     public void setMobile(String mobile) {14         this.mobile = mobile;15     }16     public String getName() {17         return name;18     }19     public void setName(String name) {20         this.name = name;21     }22     public String execute(){23         System.out.println("执行默认方法");24         return "success";25     }26     public String doFirst(){27         System.out.println("111111111");28         return "success";29     }30     public String doSecond(){31         System.out.println("222222222");32         return "success";33     }34 }

对应的登录界面,同时发生验证失败是的input视图:

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3     <%@taglib uri="/struts-tags" prefix="s" %> 4  5  6  7 
8 My First Struts2 Project 9 10 11
12
13
14 用户名
15 手机号
16
17
18 19

在struts.xml中注册方法:

编写验证xml文件:此文件名为LoginAction5-validation.xml

1 
2 5
6
7
8
9
10
11
true12
13
用户名不能为空!
14
15
16
17
18
true19
手机号不能为空!
20
21
22
23
24
手机号格式不正确!
25
26
27

 

b:通过xml配置文件的方法,对Action中的指定方法执行之前的验证:

只需要将验证xml文件的文件名加上对应的struts.xml文件中的注册方法名即可:

例:验证所有方法是 LoginAction5-validation.xml;

 将此名称改为:LoginAction5-login_doFirst-validation.xml;

  此时就是只对doFirst方法进行验证,而不验证其他方法;

转载于:https://www.cnblogs.com/lubolin/p/7269663.html

你可能感兴趣的文章
关于DSP仿真软件CCS中断点和探针的简单理解
查看>>
实验吧-杂项-异性相吸(异或加密)
查看>>
留言板
查看>>
数据库行转列操作
查看>>
爬虫学习资源
查看>>
svg格式的中国地图轮廓图
查看>>
Find All Numbers Disappeared in an Array
查看>>
时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)
查看>>
Web.Config文件配置之连接默认错误页
查看>>
[实用]19个Web开发者必备速查表(多图)
查看>>
操作系统实验一:并发程序设计
查看>>
Java常用的系统类
查看>>
XPO to Database Connectivity: Mastering Fork Etiquett
查看>>
ADO实现单条记录的刷新《转》
查看>>
python列表和循环判断
查看>>
Spring各jar包的作用(转载)
查看>>
Windows10 +Ubuntu 18.04双系统安装详细教程
查看>>
ecmall 别人做好的商城
查看>>
《数据结构教程》(李春葆 主编)课后习题【练习题7】
查看>>
What do cryptic Github comments mean?
查看>>