struts2(2012/2/24)
1、struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,struts2可以使用内建的类型转换器实现自动转换;但对于自定义的对象类型来说,就需要我们自己指定类型转换的方式了。
2、对于自定义的类型转换器来说需要提供3个信息:Action的名字、Action中待转换的属性名以及该属性对应的类型转换器。其中Action的名字是通过属性文件名来获得的;Action中待转换属性名是通过属性文件中的key来获得的;该属性对应的类型转换器是通过该key所对应的value来获得的。
3、可以使用struts2框架自带的类型转换器StrutsTypeConverter简化类型转换代码的编写,strutsTypeConverter继承与DefaultTypeConverter父类,并且提供了两个抽象方法:converFromString与converToString,分别表示从页面的字符转换为后台对象以及从后台对象转换为页面的字符串,我们只需事先这两个抽象方法即可实现类型转换。
4、全局类型转换:在src目录下新建xwork-conversion.properties,该文件的内容是待转换的类=转换器的名字,即
com.xyh.bean.UserBean=com.xyh.converter.UserConverter
5、Struts2也支持自定义方法,即在struts.xml中的action元素内定义method属性,属性值即为待执行的方法。其中,该方法的声明要与execute保持一致。但是不推荐使用这种方式,因为它容易导致Action代码混乱。
6、执行流程:
1)首先进行类型转换
2)然后进行输入校验(执行validate方法)
3)如果上述过程中出现任何错误,都不会再去执行execute方法,页面会转向strusts.xml中该action的名为input的result所对应的页面。
7、ActionSupport类的addActionError()方法的实现:首先创建一个ArrayList对象,然后将错误消息添加到该ArrayList对象中。
8、当调用getActionErrors()方法返回Action基本的错误信息列表时,返回的实际上上集合的一个副本而不是集合本身,因此对集合副本调用clear()方法清除的依旧是副本的元素而非原集合中的元素,此时原集合中的内容没有受到任何的影响。换句话说,Action级别的错误信息列表对开发者来说是只读的。
9、FieldError级别的错误信息底层是用LinkedHashMap实现的,该Map的key是String类型,value是List<String>类型,这就标识一个Field Name可以对应多条错误信息,这些错误信息都放置在List<String>集合当中。
10、Action中自定义方法的输入校验,对于通过action的method属性所指定的自定义方法,其对应的自定义输入校验方法名为validateMyExecute(假设自定义方法名为myExecute)。底层是通过反射来调用的。
11、当在Action中指定了自定义的execute方法时,首先会执行自定义的execute方法所对应的输入校验方法,然后再去执行validate方法,执行完毕后如果出现了任何错误都不会再去执行自定义的execute方法,流程转向了input这个名字所对应的页面上。
12、自定义Field级别的错误提示消息
1)新建一个以Action名命名的properties文件,如RegisterAction.properties
2)然后在该属性文件中指定每一个出错字段的错误消息:
如:Invalid.fieldvalue.birthday=birthday invalid!
13、Struts2的校验框架(有效的xml文件),具体来说分为字段优先(field)校验器与校验器优先(validator)校验器。
14、对于国际化的资源文件,其命名规则是:package_语言名_国家名.properties
15、Struts2框架校验执行的先后顺序:
1)首先执行校验框架(xml文件)
2)执行自定义方法的校验方法(如:validateMyExecute)
3)执行validate方法
struts2(2012/2/24)相关推荐
- http://www.cnblogs.com/tornadomeet/archive/2012/05/24/2515980.html
转载: Deep Learning(深度学习): ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰 ...
- struts2(2012/2/25)
1.对于struts.xml文件的结果配置来说,局部要由于全局. 2.我们既可以再Action中定义异常与结果,也可以定义全局的异常与结果,局部总是优于全局的,如果定义成全局,那么可以为所有的Acti ...
- ARM - Linux嵌入式C/C++各种资料分享【更新日期:2012/04/24】
软件篇: http://115.com/file/e7zldqhw# Red Hat EnterpriseLinux_6.1_内附说明.part1.rar http://115.com/file/dp ...
- 2012第24周国内Android应用下载排行榜动态
本周榜单共包含安卓市场在内的11家第三方应用商店数据,榜单总结如下:优亿市场,木蚂蚁市场,机锋市场获新APP最多三甲:QQ大军后继无力:淘宝客户端终于在过半市场上榜:TempleRun新版本成绩良好. ...
- 关闭Struts2中s:property的HTML自动转码
Struts2的property标签可以把"<".">"."&"等等自动转成类似&xxxx;的HTML转意表示, ...
- struts2学习笔记(2)
1. Struts2中接收参数 (1)用Action(class)中的属性来接收参数:自动匹配 View Code 当访问http://localhost:8080/struts2Deomo/user ...
- 华章IT图书书讯(2012年第9期)
深入理解Android:卷II · 经典畅销书<深入理解Android:卷I>姊妹篇,51CTO移动开发频道和开源中国社区一致鼎力推荐. · 从系统设计者的角度对Java Framew ...
- Mark Links@2012/8/25
1.CSS特效 http://www.cnblogs.com/refactor/archive/2012/08/24/2608878.html 转载于:https://www.cnblogs.com/ ...
- Struts2框架完成登录操作案例
一个简单的登录案例思路分析 在这个案例中,我们要使用struts2框架怎样解决 重点: struts2框架如何完成原来由servlet完成的工作. Struts2框架如何完成请求参数的封装处理 Str ...
最新文章
- 定义一个员工类(JAVA)
- 基于互联网云脑架构分析百度的现状与未来
- BeautifulSoup学习笔记
- Pixhawk代码分析-姿态解算篇B
- 7个HTML你可能不知道的使用技巧
- 学习笔记15-C语言-预处理指令、条件编译、头文件
- Python可以减少代码量?我不信
- 跳过php学thinkphp,PHP学习-ThinkPHP《从入门到放弃》(六)
- batchplot放到哪个文件夹_如何整理文件夹?来看腾讯设计师的方法
- 注册终止处理函数atexit()
- Java Socket 编程
- android获取spinner的值_在Android的Spinner中实现键值对的正确方法是什么
- opencv4快速入门pdf_云复工提升工作效率之九 福昕PDF阅读器
- matlab练习程序(非负矩阵分解)
- 【光纤通信】实验二、C语言实现HDB3编码
- linux如何查看隐藏进程中勒索病毒,.FileFuck勒索病毒删除+数据恢复(HiddenTear变体)...
- iphone win7无法识别_小编操作win7系统电脑不能识别iphone苹果设备的设置教程
- Win10+Vmvare+Ubuntu16.04lts的主机为英伟达TX2重装Ubuntu18.04操作系统
- 2015062801 - 祈福八仙水上乐园
- 怎样选择合适的ADC芯片
热门文章
- jQuery使用最广泛的javascript函数库
- hibernate fetch属性
- linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)
- [剑指Offer]9.用两个栈实现队列
- IE和Chrome都将支持asm.js
- 架构师的第一步:学习两种抽象视角(Abstraction View)
- input type=file accept中可以限制的文件类型
- 再思linux内核在中断路径内不能睡眠/调度的原因(2010)【转】
- hibernate4.2.1默认集成javassist-3.15.0-GA包的一个bug问题
- [转] GCC 中的编译器堆栈保护技术