Struts数据验证
Action类继承了ActionSupport类,而该类实现了Action、Validateable、ValidationAware、TextProvider、LocaleProvider和Seriazbale接口。而其中Validatteable 接口定义了一个validateable()方法,只要在用户的Action中重写该方法就可以实现验证功能。
/**
*会在执行execute之前执行,对传入的数据进行检验
*/
@Override
public void validate() {
// 如果用户名为空,就把错误信息添加到Action 类的 fieldError
if (user.getUsername()==null||user.getUsername().trim().equals("")) {
addFieldError("user.username", "用户名必须填!");
}
}
在类中定义了校验方法后,该方法会在执行系统的execute()方法执行之前执行,如果执行该方法之后Action类的fieldError中已将包含了数据校验错误信息,将把请求转发到input视图处。
<action name="StrutsDemo1" class="cn.itcast.struts2.action.StrutsDemo1">
<!-- 配置结果页面的跳转 在Action 中根据不同的返回值配置不同的跳转页面 -->
<result name="success">/demo1/main.jsp</result>
<result name="input">login.jsp</result>
</action>
会在登录界面显示错误信息。
struts2提供了校验框架,只需要增加一个校验配置文件就可以完成对数据的校验。
命名格式:ActionName-validation.xml 其中ActionName就是需要校验的用户自定义的Action类的类名 ,且该文件应与Action位于同一路径,如果Action类中有多个方法,对应的struts.xml文件中就有多个Action配置,这时如果想对其中一个方法进行验证,命名应该为ActionName-name-calidation.xml,这里的name是在struts.xml中的Action属性里面的name。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators>
<field name="user.username">
<!-- 验证字符串不能为空 ,选项必填-->
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<!-- 错误提示信息 -->
<message>用户名必填</message>
</field-validator>
</field>
</validators>
其他整数校验器:
<!-- 验证字符串不能为空 ,选项必填-->
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<!-- 错误提示信息 -->
<message>用户名必填</message>
</field-validator> <!-- 整数大小校验器 -->
<field-validator type="int">
<param name="min">18</param>
<param name="max">100</param>
<message>必须在18和100之间</message>
</field-validator> <!-- 日期校验器 -->
<field-validator type="date">
<param name="min">1990-01-01</param>
<param name="max">2017-01-01</param>
<message>日期必须在1990-01-01到2017-01-01之间</message>
</field-validator> <!-- 邮件地址校验器 -->
<field-validator type="email">
<message>必须是有效的email地址</message>
</field-validator> <!-- 网址地址校验器 -->
<field-validator type="url">
<message>必须输入有效的网址</message>
</field-validator> <!-- 字符串长度校验器 -->
<field-validator type="stringlength">
<param name="minlength">6</param>
<param name="maxlength">20</param>
<message>字符长度必须在6到20之内</message>
</field-validator> <!-- 正则表达式校验器 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\d{6})]]></param>
<message>必须是6位的数字</message>
</field-validator>
Struts数据验证的更多相关文章
- struts 数据验证
		1. validate()验证 将对页面表单验证的内容写到validate()方法中,实现验证和业务处理内容的分离 在Action中添加 validate()方法 public void vali ... 
- Struts数据效验
		表单数据的验证: 前台验证:主要是通过JS验证, 表达数据是否合法! 后台验证:通过后台java代码进行验证! Struts也提供了数据效验的方式! Struts数据效验, 通过拦截器完成: < ... 
- Java实战之01Struts2-03属性封装、类型转换、数据验证
		九.封装请求正文到对象中 1.静态参数封装 在struts.xml配置文件中,给动作类注入值.调用的是setter方法. 原因:是由一个staticParams的拦截器完成注入的. 2.动态参数封装: ... 
- Struts2(二)之封装请求正文、数据类型转换、数据验证
		一.封装请求正文到对象中(重点) 1.1.静态参数封装 在struts.xml文件中,给动作类注入值,使用的是setter方法 1.2.动态参数封装 通过用户表单封装请求正文参数 1.2.1.动作类作 ... 
- struts2(三)---struts2中的服务端数据验证框架validate
		struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ... 
- strut2 的数据验证
		数据验证 用户的输入验证,必须做,且工作量巨大. 1.验证的方式 客户端验证:javascript 服务端验证:逻辑验证(我们的代码) 注意:如果客户端和服务端二选一的话,服务器端的不能省. 实际开发 ... 
- 学习Struts--Chap06:Struts2之数据验证
		1.数据验证的概述 1.1.数据验证的重要性 数据验证是非常必要的,不但和我们的常识性理解有关系,还有可能涉及到一些非法输入等问题,所以我们需要进行必要的数据验证,以保证我们在数据输入的时候都是正确且 ... 
- Struts2数据验证机制
		1. 手动验证的实现 只需要在继承ActionSupport类的情况下,直接重写validate()方法即可.使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是 ... 
- 01_11_Strtus2简单数据验证
		01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ... 
随机推荐
- oracle将一个字段拆分成多个值 (regexp_substr函数)
			select regexp_substr(p.attributename, '[^,]+',1,level) c1from tablename p connect by level <= len ... 
- HDU - 2058 The sum problem(思路题)
			题目: Given a sequence 1,2,3,......N, your job is to calculate all the possible sub-sequences that the ... 
- MySql索引笔记
			MySQL 索引是什么 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和 ... 
- MYSQL每日一学 - 时间间隔表达式
			参考链接:https://dev.mysql.com/doc/refman/5.7/en/expressions.html Interval表达式(Temporal intervals)的使用 Int ... 
- win7系统上VMware虚拟机安装linux7.2上网配置
			环境: 本机是window7系统,安装VMware虚拟机,在VMware安装了Rdhat系统,想上网,在网上搜索了不少的配置方法,这篇文章介绍的比较全面,感谢分享,摘抄在这里让更多的爱好者学习.我自己 ... 
- PHP:验证手机号码合法性
			文章来源:http://www.cnblogs.com/hello-tl/p/7592333.html /** * [verifyPhone description] 效验手机号码合法性 * @par ... 
- Python中的列表(4)
			1.遍历列表 如果想打印列表中的所有元素,则必须遍历列表. 可以使用for ... in ... 语句来遍历列表中的元素.遍历的意思 words = ['a','b','c','d'] for wor ... 
- (贪心) Vacations  求休息的最少天数
			Description Vasya has n days of vacations! So he decided to improve his IT skills and do sport. Vasy ... 
- 关于meta标签的使用,属性的说明
			原文转自:http://blog.csdn.net/gavid0124/article/details/46826127 网页源代码中有时候会遇到这样的一段代码: <metaname=" ... 
- Mvc系统学习9——Areas学习
			在Mvc2.0中,新增加了一个特性就是Areas.在没有有使用Areas的情况下,我们的Mvc项目组织是下面这样的.当项目庞大的时候,Controllers,Model,View文件下下面势必会有很多 ... 
