Struts2提供的校验器及其规则:

struts2提供了大量的内置校验器:你可以在xwork-core-2.1.6.jar的com.opensymphony.xwork2.validator.validators下找到如下配置文件:default.xml。里面列出了所有的内置校验器。

required:必填校验器,要求field的值不能为null。

requiredstring:必填字符串校验器,要求field的值不能为null,并且长度大于0

  属性——trim:指定在校验之前是否去除字段串前后的空格。

stringlength:字段长度校验器,要求fidle的值必须在指定的范围内,否则校验失败。

  属性——minLength:指定最小长度。   maxLength:指定量大长度。   trim:指定在校验之前是否去除字段串前后的空格。

regex:正则表达式校验器,检查衩校验的field是否匹配一个正则表达式。

  属性——expression:指定正则表达式(2.3.15版用regexExpression)。     caseSensitive:指定进行正则表达式匹配时是否区分大小写。

int:整数校验器,要求field的整数值 必须在指定范围内。

  属性——min:指定最小值。   max指定最大值。

double:双精度浮点数校验器,要求field的双精度浮点数值必须在指定范围内。

  属性——min:指定最小值。   max指定最大值。

fieldexpression:字段OGNL表达式校验器。要求field满足一个ognl表达式。

  属性——expression:指定ognl表达式(表达式要写在 <![CDATA[]]> 内)。

email:邮件地址校验器。要求如果field的值非空,则必需是合法的邮件地址。

url:网址校验器。要求如果field的值非空,则必需是合法的 url 地址。

date:日期校验器,要求field的日期值必须在指定范围内

  属性——min:指定最小值。   max指定最大值。

conversion:转换校验器,指定在类型转换失败时,提示错误信息。

visitor:用于校验action中的复合属性。它拽定一个校验文件用于校验复合属性中的属性。

expression:OGNL表达式校验器。要求field满足一个ognl表达式。该逻辑表达式基于ValueStack进行求值。该校验器不可用在字段校验器风格的配置中!

  属性——expression:指定ognl表达式(表达式要写在 <![CDATA[]]> 内)。

JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
  <%@taglib uri="/struts-tags"  prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>注册页面</h1>
    <h4><s:fielderror/></h4>
    <form action="${pageContext.request.contextPath }/regist.action" method="post">
   用户名:         <input type="text" name="username"><br/>
   密  码  :        <input type="password" name="password"><br/>
   确认密码  :    <input type="password" name="repassword"><br/>
   年  龄  :          <input type="text" name="age"><br/>
   邮  箱   :         <input type="text" name="email"><br/>
   电 话   :          <input type="text" name="phone"><br/>
   生  日 :           <input type="text" name="birthday"><br/>
            <input type="submit" value="注册">
        </form>
</body>
</html>

Action类:

 public class RegistAction extends ActionSupport {
      private String username;
      private String password;
      private String repassword;
      private int age;
      private String email;
      private String phone;
      private Date   birthday;

     public String getUsername() {
         return username;
     }

     public void setUsername(String username) {
         this.username = username;
     }

     public String getPassword() {
         return password;
     }

     public void setPassword(String password) {
         this.password = password;
     }

     public String getRepassword() {
         return repassword;
     }

     public void setRepassword(String repassword) {
         this.repassword = repassword;
     }

     public int getAge() {
         return age;
     }

     public void setAge(int age) {
         this.age = age;
     }

     public String getEmail() {
         return email;
     }

     public void setEmail(String email) {
         this.email = email;
     }

     public String getPhone() {
         return phone;
     }

     public void setPhone(String phone) {
         this.phone = phone;
     }

     public Date getBirthday() {
         return birthday;
     }

     public void setBirthday(Date birthday) {
         this.birthday = birthday;
     }

     @Override
     public String execute() throws Exception {

         return NONE;
     }
 }

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="username">
          <field-validator type="requiredstring">
          <message>用户名不能为空</message>
          </field-validator>
          </field>

          <!-- 校验密码 -->
          <field name="password">
          <field-validator type="requiredstring">
          <message>密码不能为空</message>
          </field-validator>

          <field-validator type="stringlength">
          <param name="minLength">6</param>
          <param name="maxLength">12</param>
          <message>密码需要在6-12之间</message>
          </field-validator>
          </field>

          <!-- 校验确认密码 -->
          <field name="repassword">
          <field-validator type="fieldexpression">
          <param name="expression"><![CDATA[(password==repassword)]]></param>
          <message>两次密码不一致</message>
          </field-validator>
          </field>

          <!-- 校验年龄 -->
          <field name="age">
          <field-validator type="int">
          <param name="min">18</param>
          <param name="max">40</param>
          <message>年龄必须在18-40之间</message>
          </field-validator>
          </field>
          <!-- 校验邮箱 -->
          <field name="email">
          <field-validator type="email">
          <message>邮箱格式错误</message>
          </field-validator>
          </field>

          <!-- 校验电话 -->
          <!-- /^13\d{9}$/ ^13,以13开头\d{9}说明后面13后面只能是9位,$结束 -->
          <field name="phone">
          <field-validator type="regex">
          <param name="regexExpression"><![CDATA[\d(11)]]></param>
          <message>电话不合法</message>
          </field-validator>
          </field>

          <!-- 校验出生日期 -->
          <field name="birthday">
          <field-validator type="date">
          <param name="min">1974-01-01</param>
          <param name="max">1996-01-01</param>
          <message>生日不合法</message>
          </field-validator>
          </field>
 </validators>

二十二 XML校验器的更多相关文章

  1. WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]

    原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...

  2. 使用Typescript重构axios(二十二)——请求取消功能:收尾

    0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...

  3. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  4. 二十二、OGNL的一些其他操作

    二十二.OGNL的一些其他操作 投影 ?判断满足条件 动作类代码: ^ $   public class Demo2Action extends ActionSupport {     public ...

  5. 备忘录模式 Memento 快照模式 标记Token模式 行为型 设计模式(二十二)

    备忘录模式 Memento   沿着脚印,走过你来时的路,回到原点.     苦海翻起爱恨   在世间难逃避命运   相亲竟不可接近   或我应该相信是缘份   一首<一生所爱>触动了多少 ...

  6. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  7. (C/C++学习笔记) 二十二. 标准模板库

    二十二. 标准模板库 ● STL基本介绍 标准模板库(STL, standard template library): C++提供的大量的函数模板(通用算法)和类模板. ※ 为什么我们一般不需要自己写 ...

  8. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  9. Bootstrap <基础二十二>超大屏幕(Jumbotron)

    Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: ...

随机推荐

  1. 科技股 - 5G、芯片、半导体 细分龙头

    5G.芯片.半导体 细分龙头 来源:头条-南山话投资 1.射频芯片:卓胜微 2.存储芯片设计:兆易创新 3.GPU:景嘉微 4.模拟电路芯片:圣邦股份 5.半导体分立器件:扬杰科技 6.晶圆代工:中芯 ...

  2. Codeforces Round #601 (Div. 2)E(寻找质因子,DP)

    先分解质因数,对于当前a[i],假设当前的质因数为x,这个位置要满足能被k整除,有两个可能,要么是它向后一个转移x%k个,要么是后一个向它转移k-x%k个. 对于每一个a[i]满足后,因为只会对下一个 ...

  3. 广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点

    深搜,顾名思义,是深入其中.直取结果的一种搜索方法. 如果深搜是一个人,那么他的性格一定倔得像头牛!他从一点出发去旅游,只朝着一个方向走,除非路断了,他绝不改变方向!除非四个方向全都不通或遇到终点,他 ...

  4. ELK日志分析系统部署

    ======================================================================================= 操作系统 IP地址 主机 ...

  5. ax绘图相关的知识点

    1.去边框 # 去掉上.下.左.右边框 ax.spines['top'].set_visible(False) ax.spines['bottom'].set_visible(False) ax.sp ...

  6. 使用 swiper 制作 导航,点击项居中

    目的:导航有多个,被点击的项居中显示. html: <div class="swiper-container"> <div class="swiper- ...

  7. Vue ElementUI Tree组件 回显问题(设置选择父级时会全选所有的子级,有此业务场景是不适合的)

    业务场景下有这样的问题 业务需求需要保存前端 半选节点 解决方案 let checked = this.$refs.menuTree.getCheckedKeys(); //此方法获取半选节点 let ...

  8. Node.js 服务端处理图片

    Node 服务端处理图片 服务端进行图片处理是很常见的需求,但是Node在这一块相对来说比较薄弱.找了几个比较常见的模块来解决问题. gm GraphicsMagick for node 使用Open ...

  9. 关于SQL

    set nocount on 作用 阻止在结果集中返回显示受t-sql语句影响的行计数信息 set nocount on 不返回计数,set nocount off 返回计数 即使当set nocou ...

  10. 连接数据库的url

    mysql: jdbc:mysql://localhost:3306:test这句里面分如下解析:jdbc:mysql:// 是指JDBC连接方式:localhost: 是指你的本机地址:3306 S ...