我们在进行一些操作是需要对用户的输入数据进行验证,比如网站的注册,需要对各个数据项进行数据校验,Struts2提供了一些默认的校验器,比如数字的检测,邮箱的检测,字符串长度的检测等等.

  •   常用的Validator

校验器 作用
 required  必填校验器,要求字段必须有值
 requiredstring

必填字符串校验器,要求必须有值且长度大于0,即不能是空字符串。默认会去掉字符串前后空格

  参数fieldName:该参数指定校验的字段名称,如果是字段校验,则不用指定该参数

参数trim:该参数为可选参数,用于指定是否在校验之前对字符串进行整理。

stringlength

字符串长度校验器,用于检验字段中字符串长度是否在指定的范围

   参数 maxLength:用于指定最大字符串长度,该参数为可选

参数 minLength:用于指定最小字符串长度,该参数为可选

 int 

整数校验器,可以配置整数在指定的范围内

  参数 min:指定字段值的最小值,该参数为可选

参数 max:指定字段值的最大值,该参数为可选

date

日期校验器,可以配置日期在指定的范围内

参数 min:指定字段日期值的最小值,该参数为可选

参数 max:指定字段日期值的最大值,该参数为可选

email

邮件地址校验器,要求被检查的字段如果非空,则必须是合法的邮件地址。

regex    

检查是否能匹配到正则表达式,参数为regex

使用struts2的验证框架的要求:

  在对应的action的包下添加一个验证框架的配置文件,文件名称为Action类名-validation.xml.如果Action中有多个方法,则一般使用Action类名-Action别名-validation.xml.例如LoginAction-addUser-validation.xml.

  特别需要注意的是:支持校验的Action必须实现Validateable接口,一般继承ActionSupport类就可以了.

  下面写一个简单的用户注册的demo来使用一下Validator,在web项目下新建一个注册的jsp文件,名为regist.jsp,引入ognl标签库,body部分代码为:

 <body>
<s:fielderror></s:fielderror>
<s:form action="user/regist.action" validate="true">
用户名:<input type="text" name="user.name"/><br>
密码:<input type="password" name="user.password"/><br>
出生日期:<input type="text" name="user.date"/><br>
电子邮箱:<input type="text" name="user.email"/><br>
<input type="submit" value="注册"/>
</s:form>
</body>

entity包下新建一个user实体类,代码省略.

action包下新建一个RegistAction,继承ActionSupport类,代码省略.

action包下新建一个RegistAction-validation.xml,代码如下:

<?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.name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="trim">true</param>
<param name="maxLength">10</param>
<param name="minLength">4</param>
<message>用户名长度必须介于4到10之间</message>
</field-validator> </field>
<field name="user.birthday">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2016-01-01</param>
<message>日期不满足要求</message>
</field-validator>
</field>
<field name="user.email">
<field-validator type="email">
<param name="trim">true</param>
<message>邮箱格式不满足要求</message>
</field-validator>
</field>
</validators>

struts.xml内配置action:

<package name="user" namespace="/user" extends="struts-default">
<action name="regist" class="com.wang.action.RegistAction" >
<result>/index.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>

  如果检验失败,会转到input页面显示错误信息,因此action配置中必须要有一个名为input的jsp页面.运行之后,如果输入不符合要求的数据则会在浏览器提示出来.

  我在写这个demo时碰到一个问题,因为使用了ognl标签,在输入url访问regist.jsp页面时,报了一个错误:

The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location]

  后来将web.xml的url-pattern中的*.action改为/*就解决了.据说还有一种方式是不改变上面配置,只需要增加一个url-pattern为*.jsp即可,待检验.

struts2学习笔记--使用Validator校验数据的更多相关文章

  1. struts2学习笔记(4)——数据类型转换

    回过头来看昨天的那个例子. 在昨天的例子中,只转换了一个Point类,如果想转换多个Point类怎么办呢?在昨天的例子上面做一个小的修改. 首先在input.jsp页面中修改几个输入框. <s: ...

  2. struts2学习笔记(7)---数据验证之validateXxx()方法

    validateXxx()方法 上一篇文章写了使用Action的validate()方法,validate()仅仅能对action的所有方法进行验证.而要实现对action中特定的方法进行验证,就须要 ...

  3. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  4. R学习笔记(4): 使用外部数据

    来源于:R学习笔记(4): 使用外部数据 博客:心内求法 鉴于内存的非持久性和容量限制,一个有效的数据处理工具必须能够使用外部数据:能够从外部获取大量的数据,也能够将处理结果保存.R中提供了一系列的函 ...

  5. Struts2 学习笔记(概述)

    Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...

  6. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  7. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

  8. .NET MVC 学习笔记(六)— 数据导入

    .NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...

  9. Kotlin学习笔记(9)- 数据类

    系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...

随机推荐

  1. iOS 琐碎点------切某个或某几个角的圆角

    不说废话----------> 1.如果是切四个角的圆角,代码示例: self.picImage.layer.cornerRadius = 8; self.picImage.layer.mask ...

  2. redis主从复制配置

    master配置 主要是下面配置 # ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the # intern ...

  3. android——fargment基础

    1.Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应 ...

  4. 非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

    非域环境下搭建自动故障转移镜像无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法 环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一 ...

  5. ABP理论学习之启动配置

    返回总目录 本篇目录 配置ABP 配置模块 为模块创建配置 为了在应用启动时配置ABP和模块,ABP提供了一个基础设施. 配置ABP 配置ABP是在模块的PreInitialize事件中完成的.下面的 ...

  6. ENode通信层性能测试结果

    测试环境 两台笔记本网线直连,通过测速工具(jperf)测试,确定两台电脑之间的数据传输速度可以达到1Gbps,即千兆网卡的最大速度.两台电脑硬件配置如下: client服务器,CPU:Intel i ...

  7. ESP8266刷AT固件与nodemcu固件

    这回是使用的这一款 因为这款默认的是支持AT指令的固件,,所以我们就刷nodemcu的 先看接线 GPIO0 默认是工作模式(不接线).如果接了低电平就是下载模式(给模块刷固件!!)所以接低电平.CH ...

  8. Apache Spark源码剖析

    Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著   ISBN 978-7-121-25420- ...

  9. [转] Android优秀开源项目

    Android经典的开源项目其实非常多,但是国内的博客总是拿着N年前的一篇复制来复制去,实在是不利于新手学习.今天爬爬把自己熟悉的一些开源项目整理起来,希望能对Android开发同学们有所帮助.另外, ...

  10. HTML5_01之表单新特性

    1.WebStorm快捷键: Ctrl+Alt+(向下方向键):快速复制当前行 Alt+(向上/下方向键):移动当前行 Ctrl+D:删除当前行 Ctrl+/:快速(取消)注释当前行 Ctrl+Alt ...