Struts2验证框架的配置及validation.xml常用的验证规则

2023-11-08

参考:http://www.blogjava.net/focusJ/archive/2010/11/15/367272.html
http://blog.csdn.net/hackcoder/article/details/18510337

validation.xml 的命名规则和放置路径:
文件名:<ActionClassName>-validation.xml
<ActionClassName>就是要验证的Action类的名字。要将此文件放于Class文件相同的目录。

如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下:

文件名:<ActionClassName>-<aliasName>-validation.xml

例如:UserAction-login-validation.xml

(注意:上面的<aliasName>并不是method name,而是struts.xml中配置的action的name)
validation.xml 的内容示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>请填写用户名</message>
</field-validator>
<field-validator type="stringlength"> 
<param name="minLength">4</param>
<param name="maxLength">32</param> 
<message>用户名长度应在4到32个字符间</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">32</param> 
<message>为了您账号的安全,请设置6个字母以上的密码(最长可设置32个字母)</message> 
</field-validator>
</field>
</validators>

其实message的信息还有可以配置国际化:配置方法也极其简单就是<message key="userpass.required"></message>,key对应的是国际化配置文件中的国际化信息。

Struts2 的验证规则大概有以下数种:
required:必填校验器
requiredstring:必填字符串校验器
int:整数校验器
double:双精度浮点数校验器
date:日期校验器
expression:表达式校验器
fieldexpression:字段表达式校验器
email:电子邮件校验器
url:网址校验器
visitor:Visitor校验器
conversion:转换校验器
stringlength:字符串长度校验器
regex:正则表达式校验器

常用的验证规则:

1。必填检验

<validators>
<field name="username">
<field-validator type="required">
<message>指定检验失败的提示信息</message>
</field-validator>
</field>
</validators>

2。必填字符串检验

<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定检验失败的提示信息</message>
</field-validator>
</field>
</validators>

3。整数检验器/浮点检验

<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
</validators>

4。日期检验

<validators>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message key="birth.range"/>
</field-validator>
</field>
</validators>

5.字段表达式检验器(要求指定字段满足一个逻辑表达式)

<validators>
<field name="re_pass">
<field-validator type="fieldexpression">
<!--指定逻辑表达式 -->
<param name="expression"> (pass eq re_pass)</param>
<message>密码必须和确认密码相等</message>
</field-validator>
</field>
</validators>

6.邮件地址校验

<validators>
<field name="email">
<field-validator type="email">
<message>你的电子邮件地址必须是一个有效的电邮地址</message>
</field-validator>
</field>
</validators>

7。网址 检验

<validators>
<field name="url">
<field-validator type="url">
<message>你的主页地址必须是一个有效的网址</message>
</field-validator>
</field>
</validators>

8.字符串长度检验

<validators>
<field name="user">
<field-validator type="stringlength">
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的用户名长度必须在4到20之间</message>
</field-validator>

在应用的过程中遇到了两个问题
1,Struts2 validation.xml 不起作用
原因是http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd已经不是dtd约束文件了,
打开网址,发现opensymphony的网址已经迁移走了,因为xwork的东西已经并入struts2中,成为apache的一部分.

所有的dtd已经移交到http://struts.apache.org/dtds/ 这个地方.

以后struts2的校验器的规范要改成:

<?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">

这样就不会报错了,运行正常.

2,Struts2 validation.xml 正则表达式不起作用

<validators>
    <field name="username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用户名不能为空</message>
        </field-validator>
        <field-validator type="regex">
             <param name="regexExpression"><![CDATA[(\w{4,20})]]></param>
            <message>长度为4-25</message>
        </field-validator>
    </field>


    <field name="password">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>密码不能为空</message>
        </field-validator>
        <field-validator type="regex">
             <param name="regexExpression"><![CDATA[(\w{4,20})]]></param>
            <message>密码4-25</message>
        </field-validator>
    </field>
</validators>

修改:

<param name="expression"><![CDATA[(\w{4,25})]]></param>

参数名字改为regexExpression了

<param name="regexExpression"><![CDATA[(\w{4,25})]]></param>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2验证框架的配置及validation.xml常用的验证规则 的相关文章

  • 功能升级,数据同步更便捷!场景化数据同步助您提效60%!

    在企业数仓建设初期 为了保障数字化转型的落地效果 需要提供充足的数据资源 除了基础的数据抽取 转换和加载等过程 数据的同步也是重要环节之一 数据同步常用于数仓ODS ADS层的建设 通过不同数据源的同步 保障数据的及时性和准确性 从而满足不
  • LeetCode 171. Excel 表列序号

    题目链接 https leetcode cn problems excel sheet column number 思路如下 类似于 26 26 26 进制转十进制 按权展开求和 C 代码如下 class Solution public i
  • mysql到底哪里错了#1054 - Unknown column '' in 'field list'

    和 是不同的两个符号 是字段名的的定界符 就是键盘上1左边那个符号 而 是单引号 是用在字符串上的的 所以后面的应该是 values 王柳 now 工人 注1 如果你的id是自增长 那就不能出现在语句中 应该是insert into tes
  • 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台

    基于Spring4 SpringMVC4 Mybatis3 Hibernate4 Junit4框架构建高性能企业级的部标GPS监控平台 开发企业级的部标GPS监控平台 投入的开发力量很大 开发周期也很长 选择主流的开发语言以及成熟的开源技术
  • 浅谈_(js逆向)基础必备知识

    加粗样式随着技术的发展 js逆向成为爬虫必不可少的必备技术 我这里只是浅谈一下 根据自己的经验来说的 大蛇勿喷 js逆向 你首先得懂函数吧 例子 function per x y return x y 比如这个函数 function他是声明
  • 领悟《信号与系统》之 采样定理

    采样定理 采样定理 一 采样定理结论 二 奈奎斯特间隔和频率计算公式及例题 三 信号自然采样 脉冲采样 四 信号理想采样 冲激采样 采样定理 连续时间信号也叫模拟信号 在一定条件之下 模拟信号可以用该信号在等时间间隔点上的值或样本来表示 且
  • [创业之路-58] :公司、老板、专业性,优先级如何排序?

    公司 老板 专业性的优先级顺序 并不是固定不变的 要因情形而定 大公司 大多数人都在为公司打工 县官不如现管 在这样的公司 优先级如下 老板 专业性 公司 初创公司 专制型 这种公司 老板具有前瞻性 大多数决策都是正确的 在这样的公司 老板
  • vue中使用vuedraggable实现嵌套多层拖拽排序功能

    前言 vue中实现嵌套多层拖拽功能 官网入口 https www npmjs com package vuedraggable 实现效果 拖动左侧调整一级的顺序 拖动右侧调整二级的顺序 实现步骤 这里使用了插件 vuedraggable 第
  • 可以实操的代码,却在Proteus无法正常运行,sprintf函数所造成的故障

    前言 1 昨天 接了一个写代码的单子 为了防止客户说我的代码有问题 所以就打算将代码放在Proteus上跑 为什么不是硬件上跑呢 因为我的硬件找不到了 2 因为我电脑安装的Proteus总是闪退 下载安装搞了很久没搞好 于是让朋友帮忙验证
  • stata基础--回归,画散点图,异质性分析

    利用stata的内部数据来进行回归 代码 sysuse auto sysuse dir 可以看到所有的数据 su price mpg foreign reg price mpg predict u residual 新变量u 每一个观测的残
  • Kafka详解

    目录 一 消息系统 1 点对点的消息系统 2 发布 订阅消息系统 二 Apache Kafka 简介 三 Apache Kafka基本原理 3 1 分布式和分区 distributed partitioned 3 2 副本 replicat
  • JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) 解决

    重启tomcat 后台出现JDWP Transport dt socket failed to initialize TRANSPORT INIT 510 错误 因为tomca开启了debug 而debug端口占用导致的问题 1 ERROR
  • 湖南文旅数据中心:湖南文旅数据早知道(9月10日)

    湖南文旅数据早知道 9月10日 星期四 省内文旅要闻 昆明文旅推介会在长沙举行 坚持公交优先 湖南122个县市区全面实现交通一卡通互联互通 湖南雪峰启动消费扶贫 文旅产品引领乡村振兴 国内文旅要闻 国内旅游宣传推广典型案例名单发布 中秋国庆

随机推荐

  • Python3中 pyecharts.charts库可视化词云图--《你的答案》的歌词!

    Python3中 pyecharts charts库可视化词云图 你的答案 的歌词 可视化歌曲 你的答案 的歌词 词频自己设计 Project filename PythonDemo WordCount IDE PyCharm Author
  • js判断数组中是否存在某个属性或者对象

    骑士李四记录 场景一 对数组去重 1 判断是否存在字段 可以对数组去重 var arr 1 2 3 4 arr indexOf 3 2 arr indexOf 5 1 应用 去重 var list for let str of arr if
  • 算法岗面试题.收集

    收集一下算法岗面试题 后续将对问题进行自己的解答 蔚来感知算法岗面试题 1 用C 手写NMS 2 从模型和数据的角度分别说明如何解决梯度爆炸的问题 3 Faster R CNN的流程 两阶段主要解决了什么问题 4 YOLO中是怎么解决正负样
  • 解决:在自动化测试中定位到新打开的窗口的元素问题

    原始代码 time sleep 3 self driver find element by id TANGRAM PSP 10 footerULoginBtn click time sleep 2 log info 点击qq账号登陆 sel
  • 数组实现顺序二叉树的前序遍历,中序遍历,后序遍历

    顺序二叉树的满足条件 1 一般指完全二叉树 2 第n个元素的左子树为2 n 1 3 第n个元素的右子树为2 n 2 4 第n个子树的父节点为 n 1 2 注意 n为数组下标所以是从0开始 代码实现 package com yg tree a
  • js的内容

    1 JS的背景 W3C将网页的标准分成了三部分 HTML 页面的结构 CSS 页面的样式 JavaScript 页面的行为 JavaScript JS 发展背景 创建JavaScript的初衷 JavaScript最开始由网景公司创建的 参
  • 基于LEACH和HEED的WSN路由协议研究与改进(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 无线传感器网络 Wireless Sens
  • 最详细的ECLIPSE Android SDK下载安装及配置教程

    最近Neo突发神经 想要将学过的一些计算机视觉 机器学习中的算法都放到移动设备上去跑跑 因为移动开发是大势所趋嘛 希望能够通过这样一个实践的过程 找到一些新的灵感 该不会是为了赚钱吧 我自己目前也有一些idea 然后也希望以后能够进行计算机
  • linux看剩余电量命令,Linux终端如何检查笔记本电脑电池的状态和电量

    在Linux的终端检查笔记本电脑电池的状态和电量 通过三种方法从命令行找到笔记本电脑的电池状态 方法1 使用 Upower 命令 大多数Linux发行版中都预装了Upower命令 要使用Upower显示电池状态 请打开终端并运行 upowe
  • vue中使用bus来实现不同组件的传值(更推荐vuex)

    前言 在vue中实现用公共bus来实现不同组件直接的传值 实现方法 1 main js中在window上挂载一个变量EventBus window EventBus new Vue 2 传方法页面 必须在页面的销毁阶段传方法 至于原因 请看
  • Linux中处置挖矿病毒样本演示

    一 病毒特征 1 top 查看cup使用率 CUP使用率极高 也可以看到它的PID 2 查看网络连接数 netstat anpt grep tcp 连接数较高 二 处置 1 kill pid 尝试删除可疑进程 可以删除 但是他还是会自动启动
  • 亲测!推荐一款k8s前端操作界面 Kuboard for K8S

    文章目录 一 前提 二 安装Kuboard for K8S 2 1 安装 2 2 加载Kuboard镜像 2 3 准备kuboard yaml文件 2 4 执行安装命令 三 启动观察 3 1 获取token 3 2 打开浏览器 享受飞一般的
  • Redis集群配置

    目录 1 创建两个桥接虚拟机实例 1 1 修改桥接网络 1 2 修改本地网络配置文件 1 3 测试 2 配置redis集群 2 1 安装redis 2 1 1 安装依赖 2 1 2 下载redis安装包上传服务器并解压 2 1 3 解压文件
  • 搜索二叉树

    全文目录 概念 实现二叉搜索树 查找 插入 删除 性能分析 概念 二叉搜索树 它或者是一棵空树 或者是具有以下性质的二叉树 若它的左子树不为空 则左子树上所有节点的值都小于根节点的值 若它的右子树不为空 则右子树上所有节点的值都大于根节点的
  • Matlab/Simulink仿真问题及技巧汇总【持续更新】

    本文章会汇总Matlab Simulink仿真问题和相关技巧汇总 如果有问题可以查询本文 有相关问题可以私信我 给你把你们的问题同步更新 wx shadowknight007 本文章会持续更新 设置问题 仿真参数设置和示波器的使用 http
  • 矩阵列主元三角分解

    一 列主元三角分解定理 如果A为非奇异矩阵 则存在排列矩阵P使 PA LU 其中L为下三角矩阵 U为上三角矩阵 即A P 1LU 二 列主元三角分解Python代码 自己原创 def pivot lu decomposition coeff
  • ​stp文件转wrl

    什么是一 stp 文件 STP 文件是用于在 CAD 和 CAM 应用程序之间交换产品数据的 3D CAD 文件 它包含有关 3D 对象的信息 并以类似于STEP文件格式的方式保存 STP 文件根据STEP应用程序协议 ISO 10303
  • 【HBZ分享】TCP可靠性传输如何保证的?以及传输优化之Nagle算法

    ACK机制 ACK机制是发送方与接收方的一个相互确认 客户端向服务端发送连接请求 此时服务端要回馈给客户端ACK 以表示服务端接到了客户端请求 这是第一和的第二次握手 客户端接收到服务端响应后 同样也要回馈服务端的响应 告知服务端我收到了你
  • 数据结构和算法(查找算法[ 二分、插值 ]、哈希表构成、普通二叉树操作、线索化和遍历[ 前、中、后 ] 序)

    常用查找算法 顺序 线性 查找 二分查找 折半查找 插值查找 顺序查找 按照顺序 遍历数组 比对数字 如果找到 返回下标 由于比较简单 不再介绍 二分查找 二分查找思路分析 需要查找的数组必须是有序的 否则查找没有意义 二分查找代码实现 p
  • Struts2验证框架的配置及validation.xml常用的验证规则

    参考 http www blogjava net focusJ archive 2010 11 15 367272 html http blog csdn net hackcoder article details 18510337 val