本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.Struts2 内建的验证程序:参考文档 ../struts-2.3.15.3-all/struts-2.3.15.3/docs/WW/docs/conversion-validator.html

  字段验证用:<s:fielderror  fieldName=""></s:fielderror> 显示错误消息

 1 <validators>
 2     <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
 3     <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
 4     <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
 5     <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
 6     <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
 7     <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
 8     <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
 9     <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
10     <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
11     <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
12     <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
13     <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
14     <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
15     <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
16     <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
17     <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
18 </validators>

  1)required: 确保某给定字段的值不是空值 null    “”

  2)requiredstring: 确保某给定字段的值既不是空值 null, 也不是空白.  

     trim 参数. 默认为 true, 表示 struts 在验证该字段值之前先剔除前后空格.

  3)stringlength: 验证一个非空的字段值是不是有足够的长度.

     minLength: 相关字段的最小长度. 若没有给出这个参数, 该字段将没有最小长度限制

     maxLength:相关字段的最大长度. 若没有给出这个参数, 该字段将没有最大长度限制

     trim: 在验证之前是否去除前后空格

   4)date: 确保某给定日期字段的值落在一个给定的范围内

     max:相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制

       min:相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制

    5) email: 检查给定 String 值是否是一个合法的 email

    6) url: 检查给定 String 值是否是一个合法的 url

    7) regex: 检查某给定字段的值是否与一个给定的正则表达式模式相匹配.

     expresssion*: 用来匹配的正则表达式

     caseSensitive: 是否区分字母的大小写. 默认为 true

     trim: 是否去除前后空格. 默认为 true

    8)int: 检查给定整数字段值是否在某一个范围内

     min: 相关字段的最小值. 若没给出这个参数, 该字段将没有最小值限制

     max: 相关字段的最大值. 若没给出这个参数, 该字段将没有最大值限制

   9) conversion: 检查对给定 Action 属性进行的类型转换是否会导致一个转换错误. 该验证程序还可以在默认的类型转换消息的基础上添加一条自定义的消息

     10)expression 和 fieldexpression: 用来验证给定字段是否满足一个 OGNL 表达式.

        前者是一个非字段验证程序, 后者是一个字段验证程序.

        前者在验证失败时将生成一个 action 错误, 而后者在验证失败时会生成一个字段错误

        expression*: 用来进行验证的 OGNL 表达式

2.短路验证

  1) <validator …/> 元素和 <field-validator …/> 元素可以指定一个可选的 short-circuit 属性,该属性指定该验证器是否是短验证器,默认值为 false

  2) 对同一个字段内的多个验证器,如果一个短路验证器验证失败,其他验证器不会继续校验。

 1 <!DOCTYPE validators PUBLIC
 2         "-//Apache Struts//XWork Validator 1.0.2//EN"
 3         "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
 4
 5 <validators>
 6
 7     <!-- 针对于 age 属性进行验证 。基于字段的验证-->
 8      <field name="age">
 9
10      <!-- 设置短路验证,若当前的验证没有通过,则不再进行下面的验证 -->
11          <field-validator type="conversion" short-circuit="true">
12              <message>Conversion Error Occurred</message>
13          </field-validator>
14          <field-validator type="int">
15              <param name="min">20</param>
16              <param name="max">50</param>
17              <message>Age needs to be between ${min} and ${max}</message>
18          </field-validator>
19      </field>
20 </validators>

  

3.非字段验证:不针对某一个字段的验证

1 <validator type="expression">
2          <param name="expression"><![CDATA[password==password2]]></param>
3          <message>password is not equals to password2</message>
4 </validator>

  显示非字段验证的错误消息,使用s:actionerror 标签:

4.错误消息的重用:不同字段使用同样的验证规则,而且使用同样的响应消息。

  在国际化文件中

    error.int=${getTest(fieldName)}  needs to be ${min} and ${max}

  age=\u5E74\u9F84

  count=\u6570\u91CF

5.自定义验证器

  1) 自定义验证器必须实现 Validator 接口

  2) ValidatorSupport 和 FieldValidatorSupport 实现了 Validator 接口

     - 若需要普通的验证程序, 可以继承 ValidatorSupport

    - 若需要字段验证程序, 可以继承 FieldValidatorSupport

     - 若验证程序需要接受一个输入参数, 需要为这个参数增加一个相应的属性

  3)注册验证程序: 自定义验证器需要在类路径里的某个 validators.xml 文件里注册:

    验证框架首先在根目录下找validators.xml文件,没找到validators.xml文件, 验证框架将调用默认的验证设置,即default.xml里面的配置信息.

  

 

 

转载于:https://www.cnblogs.com/jasonHome/p/5927760.html

[原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用...相关推荐

  1. 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)

    长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...

  2. 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)

    开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...

  3. motan学习笔记 五 opentracing学习入门

    motan学习笔记 一 微博轻量级RPC框架Motan motan学习笔记 二 motan架构分析 motan学习笔记 三 motan Demo 分析 motan学习笔记 四 motan Demo 之 ...

  4. Makefile学习笔记 - 我的CPP之路 - C++博客

    Makefile学习笔记 - 我的CPP之路 - C++博客 Makefile学习笔记 Makefile学习笔记 先列出一个很简单的Makefile例子: --------- hd.cpp #incl ...

  5. 深度学习入门之PyTorch学习笔记:深度学习介绍

    深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...

  6. nginx学习笔记-01nginx入门,环境搭建,常见命令

    nginx学习笔记-01nginx入门,环境搭建,常见命令 文章目录 nginx学习笔记-01nginx入门,环境搭建,常见命令 1.nginx的基本概念 2.nginx的安装,常用命令和配置文件 3 ...

  7. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

  8. MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法

    MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 参考文章: (1)MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法 (2)https://www.cnblogs.com/tiny ...

  9. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

最新文章

  1. Oracle按照时间统计总结
  2. 关于ubuntu系统无线网络网速慢的解决方法
  3. Visual Studio Xamarin中找不到iOS模拟器
  4. tensorflow随笔-tf.no_op
  5. oracle创建目录并赋权,Oracle 添加用户并赋权,修改密码,解锁,删除用户的方法...
  6. 贪心算法详解(C++)
  7. 偏微分方程的数值解(六): 偏微分方程的 pdetool 解法
  8. 需要计算机安装msxml,怎么在电脑上安装msxml6.0?教大家具体安装步骤
  9. 7.1 认识Access报表
  10. 英语口语收集(二十六)
  11. python打开文件代码-python_文件操作代码实例
  12. JWT的数据格式详解
  13. oracle 登录失败次数,Oracle用户连续登录失败次数限制如何取消
  14. RGB及sRGB与XYZ坐标转换
  15. 【3D目标检测】Monocular 3D Object Detection with Pseudo-LiDAR Point Cloud
  16. spyglass使用教程
  17. zsh: illegal hardware instruction
  18. Samsara v2.0 MIS数据流脚本编程 Demo
  19. VTK教程3--------打开vtk文件
  20. 第八篇、正则表达式 re模块

热门文章

  1. [转]SUID和SGID
  2. mysql的入门基础操作
  3. java基础篇——包
  4. python3 urlencode及urldecode
  5. HNOI2015 开店
  6. java实现定时任务 Schedule
  7. Button按钮多行显示的实现方法
  8. vue使用Echart跟随窗口大小改变而重新绘制时出现读取窗口大小不及时的问题
  9. JavaScript 音频插件和图表插件
  10. javascript arguments 特殊 对象