笔记:Struts2 输入校验
Struts2的输入校验包含了客户端校验和服务器端校验,通过编写校验规则文件来实现输入校验,需要增加 Convention 插件,将 struts2-convention-plugin-2.3.31.jar 复制到 WEB-INF/lib 目录中
- 校验规则文件
- 校验规则文件命名格式:ActionName-validation.xml,其中 ActionName 为校验的 Action名称,后面的 -validation.xml 为固定字符串,并将校验规则文件保持到 Action 相同的路径下
- Struts2 的Action包含多个处理逻辑时,可以为不同的控制逻辑指定不同的校验规则文件,Struts2允许通过校验规则文件别名来指定具体需要校验的处理逻辑,命名规则:ActionClassName-ActionAliasName-validation.xml,其中 ActionClassName 为 Action处理类的类名,ActionAliasName 就是在 struts.xml 中配置该 Action 时指定的 name 属性。
- 当输入校验失败后 Status2 会返回名为 input 的逻辑视图,因此需要处理 input 的逻辑视图
- 规则文件优先级
- Struts2 搜索规则文件的规则时从上而下的,实际使用的时校验规则文件的所有规则的总和,如果二个校验文件中指定的校验规则冲突,则以后面文件中的校验规则为准。
- 首先查找 ActionName-validation.xml ,然后取 ActionClassName-ActionAliasName-validation.xml,如果Action有基类,则按照此顺序先取基类的校验文件规则,后取子类的校验文件规则。
- 配置说明
- 规则校验文件XML头和根节点如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<!--配置内容-->
</validators>
- 规则校验文件有二种配置风格,一种时字段优先,称为字段校验器风格;另一种是校验器优先,称为非字段校验器风格
- 字段校验器风格,校验文件里以<field…/>元素为基本子元素,配置格式如下:
<field name="字段名称">
<field-validator type="校验器名称" short-circuit="短路校验,默认值:false">
<param name="参数名">参数值</param>
……
<message key="国际化资源文件Key">校验失败的提示信息</message>
</field-validator>
<!--字段需要满足多个规则,下面可以配置多个校验器-->
</field>
- 非字段校验器风格,校验文件里以<validator…/>元素为基本子元素,配置格式如下:
<validator type="校验器名称" short-circuit="短路校验,默认值:false">
<param name="fieldName">需要被校验的字段</param>
<param name="参数名">参数值</param>
……
<message key="国际化资源文件Key">校验失败的提示信息</message>
</validator>
- 内建校验器
- required:要求指定的字段值必须有值(非空)
- requiredstring:要求指定的字段值必须非空且长度大于0
- 参数 trim:是否在校验前截断被校验属性值的前后空白,默认值 true
- Int\long\short\double\date:该校验器要求字段的整数值必须在范围内
- 参数 min:指定该属性的最小值,默认不检查最小值
- 参数 max:指定该属性的最大值,默认不检查最大值
- expression:非字段校验器,不能使用字段校验器风格配置,该表达式校验器要求OGNL表达式返回 true,返回 true 表示校验通过,否则校验没有通过
- 参数 expression:该参数指定一个逻辑表达式,该逻辑表达式基于 ValueStack进行求值
- fieldexpression:要求指定的字段满足一个逻辑表达式
- 参数 expression:该参数指定一个逻辑表达式,该逻辑表达式基于 ValueStack进行求值
- email\url:要求指定的字段在非空的情况下,则必须是合法的email\url,注意:因为在不断发展,建议开发自定义的
校验器来处理
邮件和URL地址。 - visitor:主要用于检测 Action 里面的复合类型,使用复合类型的规则校验文件来验证,默认情况下,该校验文件规则文件名称为 ClassName-validation.xml ,其中 ClassName 为复合类型的名称(不包含包名),如果配置了参数 context 则校验文件名称为 ClassName-context参数值-validation.xml,该规则校验文件需要放在复合类型.class文件相同的路径
- 参数 context:检测规则的上下文,用于区分复合类型的不同业务校验规则
- 参数 appendPrefix:校验失败是否增加提示消息前缀,如果配置了 true,则会将<message…/>的值做为消息前缀
- conversion:检查指定的字段在类型转换过程中是否出现错误
- 参数 repopulateField:当类型转换失败后,返回 input 页面时,类型转换失败的表单域是否保留原来的错误输入
- stringlength:要求指定的字段长度必须在指定的范围内
- 参数 trim:是否在校验前截断被校验属性值的前后空白,默认值 true
- 参数 minLength:指定字符串值的最小长度,默认不限制最小长度
- 参数 maxLength:指定字符串值的最大长度,默认不限制最大长度
- regex:检查字段是否匹配一个正则表达式
- 参数 regex:该参数指定匹配用的正则表达式,示例:<param name="regex"><![CDATA[(正则表达式)]]></param>
- 参数 caseSensitive:正则表达式是否区分大小写,默认值 true
- 自定义校验器
- 继承 FieldValidatorSupport 类,实现基类的 validate 方法来对字段值进行校验,其 getFieldName 方法获取字段名称;getFieldValue 方法获取界面输入的值;如果验证出现错误,则通过 addFieldError 增加校验错误信息。
- 增加校验器注册文件,在 src 路径下增加 validators.xml,配置格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator Definition 1.0//EN"
"http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd">
<validators>
<validator name="校验器名称" class="校验器的具体实现类名称(包含包名称)" />
</validators>
笔记:Struts2 输入校验的更多相关文章
- Struts2输入校验
1.编写校验规则文件 (<ActionName>-validation.xml),文件放在Action类文件相同的路径下校验失败返回input的result. <vali ...
- Struts2输入校验(XML方式)
本章主要介绍struts2的XML配置方式输入校验.以下将结合一个实例程序进行说明. 代码结构: 关键代码: RegistAction.javapackage com.alfred.regist.ac ...
- Struts2输入校验(编码方式)
struts2对用户输入数据的校验方法有两种方式,一种是通过编码的方式,另一种则是通过使用XML配置方式. 本章主要介绍struts2编码方式的输入校验.以下将结合一个实例程序进行说明. 代码结构: ...
- Struts2 输入校验 第四弹
ActionSupport 里面有一个validate.可以重写里面你的方法. 校验执行流程: 1)首先进行类型转化 2)然后进行输入校验(执行validate方法) 3)如果在上述过程中出现了任何错 ...
- Struts2 输入校验(使用编码方式)
一.Struts输入校验 1.创建register.jsp <%@ page language="java" contentType="text/html; cha ...
- struts2对action中的方法进行输入校验(2)
struts2输入校验流程: 1.类型转换器对请求參数运行类型转换,并把转换后的值赋给aciton中的属性 2.假设在运行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext, ...
- JavaWeb框架_Struts2_(六)----->Struts2的输入校验
1. 输入校验章节目录 输入校验概述 客户端校验 服务器端校验 手动编程校验 重写validate方法 重写validateXxx()方法 输入校验流程 校验框架校验 Struts2 内置的校验器 常 ...
- Struts 2(五):输入校验 & 校验框架
第一节 Struts2输入校验 1.1 输入校验的重要性 输入校验分为客户端校验和服务器端校验.客户端校验用来过滤用户的错误操作,一般使用JavaScript代码实现.服务器端校验用来防止非法用户的恶 ...
- 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验
在struts2中,我们能够实现对action的全部方法进行校验或者对action的指定方法进行校验. 对于输入校验struts2提供了两种实现方法: 1. 採用手工编写代码实现. 2. 基于XML配 ...
随机推荐
- 用GA算法设计22个地点之间最短旅程-R语言实现
数据挖掘入门与实战 公众号: datadw 相关帖子 转载︱案例 基于贪心算法的特征选择 用GA算法设计22个地点之间最短旅程-R语言实现 ----------------------------- ...
- 一句Python,一句R︱数据的合并、分组、排序、翻转
先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. python中的numpy模块相当于R中的matirx矩 ...
- NLP︱LDA主题模型的应用难题、使用心得及从多元统计角度剖析
将LDA跟多元统计分析结合起来看,那么LDA中的主题就像词主成分,其把主成分-样本之间的关系说清楚了.多元学的时候聚类分为Q型聚类.R型聚类以及主成分分析.R型聚类.主成分分析针对变量,Q型聚类针对样 ...
- java定时任务(三):timerTask定时任务
这种方式是纯粹的java代码,需要继承timerTask接口并重写run方法,创建这个类的时候就会调用run方法. 基本的使用逻辑是: 把自己需要处理的业务逻辑放在自己写的这个继承了timerTask ...
- AFDX总线协议规范
AFDX总线协议规范 1.概述 2. AFDX简介 3.AFDX的在数据传输性能的改进 3.1 AFDX以太网帧格式 3.2 AFDX以太网冗余备份 3.3 虚拟连接 3.4 数据交换处理 4.航空计 ...
- vc++怎么可以直接刷掉MBR?搞笑的吧
FILE * fd=fopen("\\\\.\\PHYSICALDRIVE0","rb+"); char buffer[512]; fread(buffer,5 ...
- AM335X的USB otg网卡(RNDIS /Ethernet Gadget)调试
重新编译内核(2.6.29) 2.6.29内核 Device Drivers ---> USB support ---> USB Gadget Support ...
- PCI设备内存操作函数总结
1. ExAllocatePool() 函数说明: ExAllocatePool allocates pool memory of the specified type and returns a ...
- VxWorks 符号表
符号表初始化 符号表用于建立符号名称.类型和值之间的关系.其中,名称为null结尾的任意字符串:类型为标识各种符号的整数:值为一个字符指针.符号表主要用来作为目标模块加载的基础,但 ...
- 学习Opencv Chat3
基础结构体 int x,y Float x,y; Int width,height int x,y,width,height double val[4] 这里为RGBA的值 typedef struc ...