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…

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

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、填…

读《中台架构与实现》

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

一些积累

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

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

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

Magicodes.IE之总体教程

简介Magicodes.IE&#xff0c;导入导出通用库&#xff0c;支持Dto导入导出、模板导出、花式导出以及动态导出&#xff0c;支持Excel、Csv、Word、Pdf和Html。内容合集Magicodes.IE.AspNetCore之一行代码多格式导出Excel模板导出之动态导出 Magicodes.IE Excel合并行数据导入教程…

关于VC6.0 MSDEV.EXE-应用程序错误0x5003eaed指令引用的0x000...

2019独角兽企业重金招聘Python工程师标准>>> 错误现象&#xff1a;VC6.0中&#xff0c;点击add source file或是add header file,add file to project等菜单&#xff0c;将会出现MSDEV.EXE-应用程序错误&#xff0c;并引起VC6.0的自动关闭。 错误原因&#xff1a;可…

pixelbook安装linux系统,谷歌Pixelbook可以运行Fuchsia操作系统 正测试

【PConline资讯】早在2016年就有消息称&#xff0c;谷歌正在开发一款独立于Android和Chrome OS之外的操作系统 “Fuchsia”。尽管迄今为止谷歌根本没有详细说明这个操作系统&#xff0c;但最新文档指出&#xff0c;谷歌Pixelbook 笔记本可以运行Fuchsia系统。据报道&#xff0c…

AlphaGo Zero又上《Science》封面!谷歌的人工智能又干翻人类了!

全世界只有3.14 % 的人关注了数据与算法之美卢sir在回顾2018年的时候&#xff0c;发现居然遗漏了一个“知识点”——在2018年的最后一个月&#xff0c; AlphaGo Zero登上了世界顶级学术期刊《科学》杂志的封面。Google设计了AlphaGo&#xff08;围棋机器人&#xff09;的事早已…

【译】.NET 6 Preview 4 Released

.NET 6 Preview 4 Released我们很高兴地发布 .NET 6 Preview 4。现在&#xff0c;我们到 .NET 6 正式发布尚有一半。现在是再次浏览.NET 6 全部内容的好时机&#xff0c;就像第一篇预览文章一样。许多功能处于最终形式&#xff0c;而其他功能也将很快发布&#xff0c;因为已经为…

在终端(Terminal)中用颜色显示不同类型文件

2019独角兽企业重金招聘Python工程师标准>>> 对于从Unix/Linux平台转到Mac的同学来说&#xff0c;“终端”是经常要使用的一个工具。不过可能有很多人已经发现了&#xff0c;当我们使用ls命令来显示目录内容的时候&#xff0c;“终端”对于目录、可执行文件等特殊类…