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. Codeforces Round #624 (Div. 3) F

    题意: 给出n的质点,带着初位置和速度: 如果中途两点可以相遇dis(i,j)=0: 如果不可以相遇,mindis(i,j): 求n个点的两两质点最小dis(i,j)之和 思路: 因为当初位置x和速度 ...

  2. linux shell let, expr 命令详解

    linux命令之let.exprshell程序中的操作默认都是字符串操作,在运行数学运算符的时候可能得到意想不到的答案: var=1var=$var+1echo $var 将输出 1+1从这个例子中可 ...

  3. [GameOfMir说明] 从文件中随机取文本

    功能: 从文件中随机取文本.格式: GETRANDOMLINETEXT 文件 字符串变量 ;==========================================;示例脚本[@Main] ...

  4. 统计字符在字符串中第n次出现的位置

    输入一个字符串s,一个数字n和一个字符c,统计这个字符c在字符串s中第n次出现的位置 输入格式: 输入3行.第1行是字符串s,第2行是数字n,第3行是被查找的字符c. 输出格式: 第n个字符在字符串中 ...

  5. Django 报错no sucn column: OpretionalError

    1.报错原因:新增的字段未能同步数据库 2.解决办法:删除整个数据库,然后重新编译,然后over 1.rm -rf db.sqlites3 #删除数据库 2.rm -rf cmdb/migrarion ...

  6. Ubuntu 国内安装 kubernetes

    由于墙的原因,国内要安装 kubernetes 非常的麻烦,因此只要解决这个问题,就可以顺利安装 kubernetes 的 三个官法工具 kubelet.kubeadm.kubectl. 安装环境: ...

  7. PTA的Python练习题(十七)

    第4章-19 矩阵运算 a=eval(input()) s=[] count=0 for i in range(a): b=input() s.append([int(i) for i in b.sp ...

  8. 【转】docker配置参数详解---/etc/docker/daemon.json完整参数

    docker-daemon.json各配置详解 { “api-cors-header”:"", ——————在引擎API中设置CORS标头 “authorization-plugi ...

  9. [BPNN]BP神经网络实现

    BP神经网络实现 以3层网络为例,Python实现: 1.代码框架 主要函数: Init函数:设定InputLayer nodes.HiddenLayer nodes.OutputLayer node ...

  10. mysql学习笔记(三):unsigned理解以及特殊情况

    UNSIGNED UNSIGNED属性就是将数字类型无符号化,与C.C++这些程序语言中的unsigned含义相同.例如,INT的类型范围是-2 147 483 648 - 2 147 483 647 ...