struts2对action的指定方法进行校验

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在strust2中,我们可以实现对action的所有方法进行校验或者对action的指定方法进行校验。

一、对于输入校验struts2提供了两种实现方法struts2对action的指定方法进行校验

1、采用手工编写代码实现struts2对action的指定方法进行校验

(1)通过重写validate()方法实现,validate()方法会校验action中所有与execute方法签名的方法。struts2对action的指定方法进行校验当 某个数据校验失败时,我们应该调用addFieldError方法往系统的fieldErrors添加校验失败信息(为了使用 addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信 息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息struts2对action的指定方法进行校验

(2)

通过validateXxx()方法实现,validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写struts2对action的指定方法进行校验。 当某个数据校验失败时,我们应该调用addFieldError方法往系统的fieldErrors添加校验失败信息(为了使用 addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信 息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息struts2对action的指定方法进行校验

(3)、输入校验的流程struts2对action的指定方法进行校验

struts2对action的指定方法进行校验、类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。

struts2对action的指定方法进行校验、如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息封装到fieldErrors里。不管类型转换是否出现异常,都会进入第3步。

struts2对action的指定方法进行校验、系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。

struts2对action的指定方法进行校验、再调用action中的validate()方法。

struts2对action的指定方法进行校验、经过上面struts2对action的指定方法进行校验步,如果系统中的fieldErrors存在错误信息(即存放错误信息的集合的size大于(0),系统自动将请求转发至名称为input的视图。如果系统中的fieldErrors没有任何的错误信息,系统将执行action中的处理方法。

2、基于XML配置方式实现struts2对action的指定方法进行校验

(1)使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一 个包下,文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类 名,-validation为固定写法。如果Action类为cn.itcast.UserAction,那么该文件的取名为:UserAction- validation.xml.下面是校验文件的模版:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN"
         "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
 <field name="userNo">
  <field-validator type="requiredstring">
   <param name="trim"></param>
   <message>用户帐号不能为空</message>
  </field-validator>
  <field-validator type="stringlength">
   <param name="minLength">3</param>
   <param name="maxLength">20</param>
   <message>用户帐号长度在3-20个字符之间</message>
  </field-validator>
 </field>
 <field name="userPwd">
  <field-validator type="requiredstring">
   <param name="trim"></param>
   <message>用户密码不能为空</message>
  </field-validator>
  <field-validator type="stringlength">
   <param name="minLength">6</param>
   <param name="maxLength">50</param>
   <message>用户密码长度在6-50个字符之间</message>
  </field-validator>
 </field>
 <field name="userName">
  <field-validator type="requiredstring">
   <param name="trim"></param>
   <message>用户姓名不能为空</message>
  </field-validator>
  <field-validator type="stringlength">
   <param name="maxLength">50</param>
   <message>用户姓名长度不能超出50个字符</message>
  </field-validator>
 </field>
 <field name="gender">
  <field-validator type="required">
   <message>性别不能为空</message>
  </field-validator>
 </field>
 <field name="email">
  <field-validator type="email">
   <message>用户邮箱地址无效</message>
  </field-validator>
 </field>
</validators>

struts2对action的指定方法进行校验<field> 指定action中要校验的属性,<field-validator>指定校验器,上面指定的校验器requiredstring是由系统提 供的,系统提供了能满足大部分验证需求的校验器,这些校验器的定义可以是在xwork-2.x.jar中的 com.opensymphony.xwork2.validator.validators下的default.xml中找到。

<message>为校验失败后的提示信息,如果字符串类型的username属性进行验证,首先要求调用trim()方法去掉空格,然后判断用户名是否为空。

(2)struts2对action的指定方法进行校验在编写ActionClassName-validation.xml校验文件时,如果出现不了帮助信息,可以按下面方式解决:

windwos->preferences->myeclipse->files and editors->xml->xmlcatalog点"add",在出现的窗口中的location中选"File system",然后在xwork-2.1.2解压目录的src\java目录中选择xwork-validator-1.03.dtd,回到设置窗口的时候不要急着关闭窗口,应把窗口中的Key Type该为URL。Key改为http://www.opensympkony.com/xwodk/xwork-validator-1.0.3.dtdstruts2对action的指定方法进行校验

转载于:https://my.oschina.net/u/273709/blog/80422

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EFCore之命令行工具

介绍EFCore工具可帮助完成设计数据库时候的开发任务&#xff0c;主要用于通过对数据库架构进行反向工程来管理迁移和搭建DbContext和实体类型。EFCore .NET命令行工具是对跨平台.NET Core CLI工具的扩展&#xff0c;该工具执行需要具有.NET Core SDK(具有 Sdk"Microsoft.N…

linux新建文件夹明率,linux新建文件和文件夹命令

1、touch命令touch命令用来修改文件的访问时间、修改时间。如果没有指定时间&#xff0c;则将文件时间属性改为当前时间。当指定文件不存在&#xff0c;touch命令变为创建该文件。语法&#xff1a;touch [-acm] [-d STRING-time] [-r reference-file] [-t [[CC]YY]MMDDhhmm[.ss…

想让数据分析更简便,怎能少了它!

R作为一种统计分析软件&#xff0c;广泛应用于生物、医学、电商、新闻等数据相关行业&#xff0c;是目前主流数据应用软件之一。为了更好地帮助大家了解并快速入门R语言&#xff0c;现超级数学建模携手柯老师以R语言为基础&#xff0c;向大家隆重推出《R语言基础》系列课。柯老…

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测

分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测 目录 分类预测 | Matlab实现MTF-CNN-Mutilhead-Attention基于马尔可夫转移场-卷积神经网络融合多头注意力多特征数据分类预测分类效果基本描述程序设计参考…

Akka2使用探索3(Duration 和 Deadline)

2019独角兽企业重金招聘Python工程师标准>>> akka提供了两个关于时长的数据类型&#xff1a;Duration 和 Deadline&#xff0c;比如5秒钟这种含义。 Duration.Inf表示无限&#xff0c;Duration.MinusInf表示负无限 Deadline, 表示一个绝对的时间点&#xff0c;意义是…

C#垃圾回收机制(GC)

GC的前世与今生虽然本文是以.net作为目标来讲述GC&#xff0c;但是GC的概念并非才诞生不久。早在1958年&#xff0c;由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能&#xff0c;这是GC的第一次出现。Lisp的程序员认为内存管理太重要了&#xff0c;所…

收藏 | EXCEL的36个逆天功能,动画教程

全世界只有3.14 % 的人关注了数据与算法之美1、添加文字下面线条的2种方法2、设置列宽的3种方法3、以cm为单位设置行高跟列宽4、输入0开头数字的2种方法5、快速输入当天日期与时间6、如何输入分数&#xff1f;7、生成序列的3种方法8、快速录入相同内容9、隐藏没有数据区域10、填…

linux连接教程视频,[原创]linux视频教程之连接

这次说一下ln的相关原理和用法在开始介绍连接( Link ) 之前&#xff0c;我们得先来了解一下什么是inode 这个东西&#xff1f;说实在的&#xff0c;这个东西真的很重要&#xff0c;不了解它的时候&#xff0c;很容易搞错很多的东西什么是inodes &#xff1f;要提到inode 之前&a…

读《中台架构与实现》

最早是在极客时间知道欧创新老师的&#xff0c;我也是他的课程《DDD实战课》的订阅者&#xff0c;后来欧老师基于这门课程做更多的实践与思考&#xff0c;完成了《中台架构与实现&#xff1a;基于 DDD 和微服务》这本书的写作&#xff0c;最近刚好读完了这本书。中台、微服务、…

fedora17的gnome3桌面美化

使用fedora已经有一段时间了,感觉还可以. 今天配置一下gnome的桌面吧. 首先要安装一款工具,这个可以说很必要了,当然,好多的博客里也都提到过,这就是 gnome-tweak-tool yum install gnome-tweak-tool 之后呢, 就可以打开这个软件,在附件里, 中文名字叫做高级设置,英文名字叫做…

全球高智商俱乐部门萨出品,最强大脑达人推荐,让孩子挑战脑力极限,玩出高智商思维!...

我们经常听到“脑力体操”(Mind Gymnastic)&#xff0c;可能大家都不太懂得是什么。通俗地讲&#xff0c;就是时不时&#xff0c;给大脑来点小体操。可以灵活运用大脑&#xff0c;确保头脑是清醒的。门萨试题作为全球公认的“脑力体操”&#xff0c;它不是数学题&#xff0c;对…

linux关机开机命令详解,Linux关机与重启的命令详解

Linux有如下的关机和重启命令:shutdown, reboot, halt, poweroff&#xff0c;那么它们有什么区别呢&#xff1f;shutdown - 建议使用的命令shutdown是最常用也是最安全的关机和重启命令&#xff0c;它会在关机之前调用fsck检查磁盘&#xff0c;其中-h和-r是最常用的参数&#x…

Microsoft Build 2021大会开始后,Develop Blog一系列更新

.NET BLOG发布.NET 6预览版4https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-4/发布**.NET MAUI**预览版4https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-4/介绍运行时.NET热重载时编辑代码的体验https://devblogs.microsoft.com/dotnet…

网络管理员面试时常用的问题及答案

大家可以了解一下&#xff0c;以便以后面试时备用。 以下是附件正文内容第一部分1.请写出568A与568B的线序 2.按照数据访问速度排序&#xff1a;硬盘、CPU、光驱、内存 3.请写出下列服务使用的默认端口POP3、SMTP、FTP 4.网卡MAC是由6组什么组成的 5.ISO/OSI 7层模型是什么 6.C…

数学无用论??我们欠孩子真正的数学阅读

说到数学&#xff0c;我想起了13年一场轰动行业各界的“数学无用论”&#xff01;那时微博上有个话题叫做#让数学滚出高考#&#xff0c;超过7成网友都表示支持&#xff0c;这可怕的比例就能说明在中国由于数学差导致命运被洗牌的真不在少数……甚至大部分人举起了“数学无用论”…

Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取

Android系统信息获取 之十三&#xff1a;Linux内核版本信息获取Android系统是基于Linux的&#xff0c;各个Android版本对应的Linux版本不尽相同&#xff0c;我们这里不去追究各个Android对应的Linux版本是什么&#xff0c;而是通过工具或者使用代码的方法去获取我们使用的Andro…

让Dapper在一个项目中支持多种库

如果想在一个项目中&#xff0c;用DapperPlus支持多种数据库该怎么做&#xff1f;在《让Dapper支持Mock》中我们定义了DapperPlus&#xff0c;可以基于这个类&#xff0c;实现两个子类&#xff1a;MySqlDapperPlus&#xff0c;MsSqlDapperPls&#xff0c;在这两个子类的构造中适…

一些积累

为什么80%的码农都做不了架构师&#xff1f;>>> 查看某文件属于哪个RPM包。 我一直使用的是ubuntu&#xff0c;用的是apt-get所以。。&#xff0c;答案是-qf&#xff0c;没有环境没法实验&#xff0c;也不想装rpm在我的ubuntu里。 run level 这个不同的linux发行版…

数据庞大繁杂,如何精简挖掘?

从数据中抽取信息从信息中挖掘知识随着大数据时代的到来&#xff0c;数据挖掘的重要性越发显著。可谓是兵马未至&#xff0c;数据先行。所谓数据挖掘&#xff0c;一般是指从大型数据库中将隐藏的预测信息抽取出来的过程&#xff0c;而更为精确的解释就是“从数据中挖掘知识”。…

xps13安装linux系统,[操作系统]Dell XPS 13 (9360)安装配置 ubuntu 16.04 实现 win10 Linux双系统...

[操作系统]Dell XPS 13 (9360)安装配置 ubuntu 16.04 实现 win10 Linux双系统0 2017-07-17 12:00:18博主今日投身于SLAM的研究事业&#xff0c;放弃了以往win10下各种IDE的开发环境&#xff0c;选择了在自己的xps13上装上ubuntu16.04&#xff0c;投身于更为方便的linux进行学习…