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数据验证的更多相关文章

  1. struts 数据验证

    1. validate()验证 将对页面表单验证的内容写到validate()方法中,实现验证和业务处理内容的分离 在Action中添加 validate()方法   public void vali ...

  2. Struts数据效验

    表单数据的验证: 前台验证:主要是通过JS验证, 表达数据是否合法! 后台验证:通过后台java代码进行验证! Struts也提供了数据效验的方式! Struts数据效验, 通过拦截器完成: < ...

  3. Java实战之01Struts2-03属性封装、类型转换、数据验证

    九.封装请求正文到对象中 1.静态参数封装 在struts.xml配置文件中,给动作类注入值.调用的是setter方法. 原因:是由一个staticParams的拦截器完成注入的. 2.动态参数封装: ...

  4. Struts2(二)之封装请求正文、数据类型转换、数据验证

    一.封装请求正文到对象中(重点) 1.1.静态参数封装 在struts.xml文件中,给动作类注入值,使用的是setter方法 1.2.动态参数封装 通过用户表单封装请求正文参数 1.2.1.动作类作 ...

  5. struts2(三)---struts2中的服务端数据验证框架validate

    struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...

  6. strut2 的数据验证

    数据验证 用户的输入验证,必须做,且工作量巨大. 1.验证的方式 客户端验证:javascript 服务端验证:逻辑验证(我们的代码) 注意:如果客户端和服务端二选一的话,服务器端的不能省. 实际开发 ...

  7. 学习Struts--Chap06:Struts2之数据验证

    1.数据验证的概述 1.1.数据验证的重要性 数据验证是非常必要的,不但和我们的常识性理解有关系,还有可能涉及到一些非法输入等问题,所以我们需要进行必要的数据验证,以保证我们在数据输入的时候都是正确且 ...

  8. Struts2数据验证机制

    1. 手动验证的实现 只需要在继承ActionSupport类的情况下,直接重写validate()方法即可.使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是 ...

  9. 01_11_Strtus2简单数据验证

    01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ...

随机推荐

  1. 【简●解】POJ 1845 【Sumdiv】

    POJ 1845 [Sumdiv] [题目大意] 给定\(A\)和\(B\),求\(A^B\)的所有约数之和,对\(9901\)取模. (对于全部数据,\(0<= A <= B <= ...

  2. 51nod 1551 集合交易 最大权闭合子图

    题意: 市场中有n个集合在卖.我们想买到满足以下要求的一些集合,所买到集合的个数要等于所有买到的集合合并后的元素的个数. 每个集合有相应的价格,要使买到的集合花费最小. 这里我们的集合有一个特点:对于 ...

  3. Git 教程 -- 第一天

    什么是Git? Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. 为什么使用Git? 众所周知,版本控制系统分为集中式版本控制系统(SVN.CVS等)与分布式版 ...

  4. ehcache的学习笔记(一)

    学习ehcache文档: 介绍:Ehcache是一个开源的项目,用来提高性能的基于标准化的缓存,无需使用数据库,简化了可扩展性.他是最广泛使用的基于java的缓存,因为他是强壮的,被证实的,功能全面的 ...

  5. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  6. lnmp -memcached使用

    系统需求: CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin Server/Aliyun/Amazon/Mint Linux发行版 需要5GB以上硬盘剩 ...

  7. C#上位机开发(三)—— 构建SerialAssistant雏形

    上一篇简单介绍了C#的一些基本知识,并成功的Hello,World,那么从这篇开始,我们来自己动手写一个串口助手: 1.构思功能 串口助手在单片机开发中经常被用来调试,最基本的功能就是接收功能和发送功 ...

  8. 【Codeforces 231C】To Add or Not to Add

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 把数组排个序, 显然优先用大的且小于枚举的数字a[i]的数字变成a[i] 那么肯定有一个范围j. 然后a[j~i-1]都能在k花费以内变成a[ ...

  9. html的href标签不能下载apk文件

    解决方案: 打开Internet 服务管理器Internet 服务管理器 网站属性 HTTP头(MIME类型) 新建 扩展名:.apk 类型(MIME): application/vnd.androi ...

  10. Spring boot 搭配 JPA 生成表注释 和 字段注释

    原文地址:https://blog.csdn.net/qq_39996837/article/details/84717748 由于在数据库表反向生成过程中呢,需要通过jpa自动生成表,并且这个表必须 ...