struts2表单验证-原理加基本用法

struts2的表单验证有两种方式[两种方式都是同一个数据验证拦截器(validate)在作用]:
1.手工验证:自己手动写一个validate()方法,实现数据验证。
前提:此action继承ActionSupport或者实现Validateable, ValidationAware接口
该方法中,写数据检查代码,如果有错误就把错误信息添加到值栈中。当值栈中的错误信息不为空,struts2会自动返回一个input的结果
validate()对Action里的全部方法做数据校验
如果只想对Action里的某xxx方法做数据校验 ,写一个validateXxx()方法
jsp页面配合<s:Filederror/>和<s:actionerror/>(表达式验证时用此显示)

2.使用xml配置文件,实现表单验证
数据验证拦截器,当存在验证规则的xml文件时,自动读取里面的验证规则,来对字段进行验证,如果验证不通过则返回input跟类型转换过程一致。
前提:要对某个action进行数据验证,那么xml文件名一定是action名-validation.xml,并且和action同一目录。
注意:使用表达式验证,产生的错误,属于actionerror 使用<s:actionerror/>输出此类型的错误消息。

常用的使用xml配置文件,实现表单验证
<validators>
<!-- 字段的验证规则 -->

<!-- 年龄字段的校验规则 -->
<field name="user.age">
<field-validator type="int">
<param name="min">20</param>
<param name="max">30</param>
<message>年龄必须在${min} 到 ${max} 之间</message>
</field-validator>
</field>

<!-- 用户名不能为空 , 长度校验 -->
<field name="user.username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>

<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<param name="trim">true</param>
<message>用户名必须在6-12位之间</message>
</field-validator>

</field>

<!-- 电子邮件验证 -->
<field name="user.email">
<field-validator type="email">
<message>电子邮件必须符合邮件规则</message>
</field-validator>
</field>

<!-- 密码长度校验 -->
<field name="user.password">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>密码不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<param name="trim">true</param>
<message>密码长度必须在6-12位之间</message>
</field-validator>
</field>

<!-- 使用正则,身份证验证 -->
<field name="user.idCard">
<field-validator type="regex">
<param name="regex"><![CDATA[^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$]]></param>
<message>身份证必须符合规则</message>
</field-validator>
</field>

<!-- 使用表达式校验,来验证密码和确认密码一致 -->
<validator type="expression">
<param name="expression"><![CDATA[user.password==password2]]></param>
<message>密码和确认密码必须相同</message>
</validator>
</validators>

时间: 2024-10-25 09:38:56

struts2表单验证-原理加基本用法的相关文章

[JavaWeb基础] 015.Struts2 表单验证框架

在web开发的过程中,我们经常要用到一些填写表单的操作,我们一般都要在提交表单信息的时候对表单的内容进行验证,struts2给我们提供了简单的实现接口,让我们可以很容易的对表单进行验证.下面讲解下最传统的方法配置表单验证框架,还有更简单明了的就是利用注解,这里就不解释了. 1.首先我们要在要进行配置的Action的同级目录下,新建一个.xml文件,命名格式为:ActionClassName-validation.xml. 例如我的Action类名为:RegisterAction   那么xml名

后台验证及struts2表单验证里field-validator type值的含义?

http://lovehui0228.iteye.com/blog/592808   后台验证 int 整数:double 实数:date 日期:expression  两数的关系比较: email Email地址:urlvisitorconversion regex 正则表达式验证:required 是否为空:requiredstring 必须字符:stringlength 输入字符长度限制;答案补充 url web地址 visitor 访问 conversion 转换 <validators

ant-pro使用Form表单验证上传图片出现的问题

1.复现:用antd的Form表单验证上传图片必填项时出现问题:复现过程,先提交,提示图片需要上传,上传成功后,依旧提示:图片未上传 2.表单验证原理:先理解一下antd的Form表单验证的表层原理,每个表单getFieldDecorator配置项都有个名字,比如就叫goodsSkuImg,这个goodsSkuImg对应this.props.form.goodsSkuImg如果为空则验证不通过. 3.结论:Form提示的根本原因是this.props.form.goodsSkuImg值为空 4.

struts2官方 中文教程 系列十一:使用XML进行表单验证

在本教程中,我们将讨论如何使用Struts 2的XML验证方法来验证表单字段中用户的输入.在前面的教程中,我们讨论了在Action类中使用validate方法验证用户的输入.使用单独的XML验证文件让您可以内置到Struts 2框架的验证器. 贴个本帖的地址,以免被爬:struts2官方 中文教程 系列十一:使用XML进行表单验证  即 http://www.cnblogs.com/linghaoxinpian/p/6938720.html 下载本章节代码 为了使用户能够编辑存储在Person对

正则表达式基础知识及常用表单验证正则(使用时查找为主,需多加基础方法的例子)

一.需要转义的特殊符号,也就是需要在前面添加\:!$ * + = | . ?  \  / [] {}  ^ () 二.正则表达式基本形式及方法:A:re =new RegExp(“a”,“i”);  //new出来的匹配方式B:   re=/a/i ;                            //直接量(更常用) pattern.exec(str)     //返回数组pattern.test(str)       //返回布尔值pattern.toSource(str)    

atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证

atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表单验证表现形式 1 2.1. 弹框 1 2.2. 浮动tooltip,推荐这个 1 3. 表单验证的实现原理 1 3.1. 定义reg 2 3.2. 解释 2 3.3. 调用提示... 2 4. 表单验证框架选型easyui>ligerui 2 4.1. ligerui的表单验证选型... 2 4.

php常用表单验证类用法实例

<?php /** * 页面作用:常用表单验证类 * 作 者:欣然随风 * QQ:276624915 */ class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { Return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度

js面向对象加构造函数模式表单验证

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表单验证</title> <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script> </head> <body>

群里分享的react的收藏一下!今日周末,改了个表单验证然后无所事事了!

今日周末,改了个表单验证然后无所事事了,然后把昨天群里分享的react的收藏一下尽管现在还在研究angular和nodeJs毕竟刚刚开始用有点不熟...没准以后会研究一下react毕竟看着下面这张图还是觉得有点欢乐的 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,