Struts2的类型转换(下)
Struts2提供的类型转换:
Struts2提供的是一个名叫StrutsTypeConverter的抽象类,这个类实际上是DefaultTypeConverter的子类。当我们继承自该抽象类
时,要求我们实现下面的两个方法:
@Overridepublic Object convertFromString(Map arg0, String[] arg1, Class arg2) {// TODO Auto-generated method stubreturn null;}@Overridepublic String convertToString(Map arg0, Object arg1) {// TODO Auto-generated method stubreturn null;}
很明显我们可以看到该抽象类将父类中的convertValue方法拆分成了两个单独的方法,来简化我们的实现工作,使程序的逻辑更加清楚。下
面是简单的实现代码:
@Overridepublic Object convertFromString(Map arg0, String[] values, Class toClass) {User user = new User();String[] useValues = values[0].split(",");String username = useValues[0];String userpass = useValues[1];user.setName(username);user.setPass(userpass);return user;}@Overridepublic String convertToString(Map context, Object o) {if (o instanceof User) {User user = (User) o;return "<" + user.getName() + "," + user.getPass() + ">";}return null;}
在这之前我们都是考虑的要转换的属性是单个的情况,那么当我们在Action中设置的属性字段是多个也就是数组的时候,又是怎么处理
的呢?比如我们在Action中将【privateUser user;】替换为【private User[] users;】时,有怎么处理呢?实现的方法也非常容易理解,
可以从参考下面的实现代码:
(实验未成功运行)
类型转换的错误处理:
Struts框架为类型转换提供了一个默认的conversionError拦截器,这个拦截器被注册到默认的拦截器栈中。可以查看struts-
default.xml文件,在里面找到相关内容,部分内容如下如所示:(我们要学会自己去看,去寻找事情的原因。在初学阶段Struts2
里面有两个文件我们会经常用到:
@1:struts-default.properties,这个文件在jar包struts2-core-2.3.31中,可以通过WinRAR或其它解压缩软件解压后就
可看到。
@2:default.properties,这个文件同样是在jar包struts2-core-2.3.31中,具体路径是struts2-core-2.3.31\org\apache
\struts2,里面定义了Struts2中的所有常量,将来我们在配置一些常量比如打开或关闭调试模式,设置是否支持动态方法调用等时
,可以作为参考)。
上面我们说到了默认的拦截器conversionError,它会将拦截到的错误消息封装成表单域错误(fieldError),将其放到ActionContext
中, 我们可以在jsp页面中使用<s:fielderror/>将错误信息打印出来(需使用Strurs2的自定义标签)。当拦截器对错误信息处理后,页面
会转入“input”逻辑视图下,就是我们在struts.xml中配置的对应于Action的<resultname="INPUT">xxx.jsp<result/>。(这里建议在
编写Action类的时候继承ActionSupport类,该类中为类型转换错误处理,数据校验等实现了基本的处理工作)。这样当表单验证失败时,
会在INPUT逻辑视图下的页面中显示:信息,xxx为对应的Action中要转换的属性名称。
除此之外,如果我们想让类型转换出错时显示:XXX类型转换错误 这样的提示信息,此时我们可以通过全局国际化资源文件来配置,下
面是简单的操作步骤:
@1文件路径:既然是全局的资源文件,当然要把它放到src目录下,或者还可以直接放到WebContent/WEB-INF/classes下面
(classes文件夹若没有可自己创建)。
@2文件命名格式:xxx.properties即可,但xxx不能为struts,因为struts.properties在项目中有其固定的用途,这里不做过
多说明。
@3文件内容:xwork.default.invalid.fieldvalue={0}类型转换错误。
@4加载资源文件:这里只提供其中一种方式,在struts.xml文件中的<struts>标签下加上 <constant name="struts.custom.
i18n.resources" value="global"></constant>,struts.custom.i18n.resources可以在上面提到的文件default.properties文
件中找到。
经过上述步骤后,我们可以发现提示错误信息已经换成了我们规定的格式。
在某些时候我们或许需要为Action中不同的属性字段设置不同的提示信息,此时我们只需要在该Action的资源文件中配置即可,操作
步骤如下:
@1创建Action的局部资源文件,命名格式:ActionName.properties。ActionName是对应的Action类的文件名。
@2文件内容:invalid.fieldvalue.属性名=提示信息。
@3文件路径:与对应的Action在同一路径下。
经过上述步骤后,我们已经为字段设置了不同的提示信息了。
转载于:https://www.cnblogs.com/itaiit/p/6426843.html
Struts2的类型转换(下)相关推荐
- (十二)struts2的类型转换
所有的MVC框架,都属于表现层的解决方案,都需要负责收集用户请求参数,并将请求参数传给应用的控制器组件. 这时问题出现了,所有的请求参数都是字符串类型数据,因此MVC框架必须具备将这些字符串请求参数转 ...
- Struts2之类型转换
http://blog.csdn.net/xiazdong/article/details/7229682 一.Struts2 类型转换介绍 类型转换:解析HTTP请求参数,将Http请求参数赋值给A ...
- Struts2 Date类型转换问题
来源:http://blog.csdn.net/cowboy324/article/details/6704716 在Struts2中,一般的内置类型都会在由系统自动进行转换.但是Date类型好像有时 ...
- struts html:select 默认选中,Struts2自动选择下拉框的值
在Struts2中,HTML下拉框可以通过标签呈现.要自动选择一个下拉框的默认值,只是声明值"属性标记,并设置相应的默认值. 这里创建一个Web工程:strut2autoselectdrop ...
- Struts2 自己定义下拉框标签Tag
自己定义标签主要包含三个步骤: 1.编写java类,继承TagSupport类. 2.创建tld文件,影射标签名和标签的java类. 3.jsp页面引入tld. 样例:自己定义下拉框标签 假设页面上有 ...
- java xwork_java-与休眠的Struts2 xwork类型转换
在Struts2应用程序中转换类型的最佳方法是什么? 现在,我想为我的应用程序中的某个休眠实体创建CRUD.假设我想更改与用户关联的帐户.只要我具有所有适当的获取器/设置器,我就可以传递带有特定值的参 ...
- struts2.x自定义类型转换
struts2的类型转换是基于OGNL(对象图像导航语言) 1 OGNL里面有一个接口TypeConverter,该接口有一个方法convertValue,convertValue该方法很复杂,里 ...
- 整合Struts2、Spring、Hibernate构建J2EE应用
[论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...
- struts2(2012/2/24)
1.struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,struts2可以使用内建的类型转换器实现自动转换:但对于自定义的对象类型来说,就需要我们自己指定类型转换的方式 ...
最新文章
- sqlmap 常用操作
- 万维网发布服务 w3svc 已停止 除非万维_W3C万维网联盟宣布停止发布HTML 5.3版
- 【安全漏洞】Easy代码审计
- 如何使用Graphics2D在一张图片上画线(包括箭头)
- .NET Core + Kubernetes:Pod
- 十进制小数化为二进制小数的方法是什么_八进制转换成十进制,十进制转换成八进制...
- 计算机应用 winxp,2017年职称计算机考试模块WindowsXP试题
- 动态规划 —— 线性 DP —— 序列问题
- mysql从库延时好高_部署MySQL延迟从库的几个好处
- windows本地凭据备份与还原
- [渝粤教育] 盐城工学院 大学物理(力学、振动与波动) 参考 资料
- 中国地图里暗藏的天机
- 虚拟机Ubuntu21.04全屏显示
- Windows server 2008 密码策略不能修改的解决办法
- 毕业一年来我的前端之路总结和谈谈大厂外包工作体验
- 试验数据管理系统TDM6.0产品功能介绍之——签到管理
- bton框架业务核心流程架构
- word表格合并单元格后,光标居中
- sigsuspend 函数 释疑
- PCI DSS认证到底难在何处?
热门文章
- python函数绘制5个太阳花_python_bomb----函数
- mysql的一个字段最多能插入多少数据?我们存入text类型的值上限是多大?
- java组长一个月工资多少,保准看明白!
- 一条正确的Java职业生涯规划,从理论到实践!
- 全球缺芯的后果来了——网站推广之下小米宣布部分电视产品型号要涨价!
- 网络推广专员浅析网站运营三种基本模式具备哪些网络推广重点!
- 网站增改不要只想着收益更应该思考原有的损失
- java excel读取操作,Java 操作 Excel (读取Excel2003 2007,Poi兑现)
- html怎样添加日历控件,向日历控件中添加自定义内容
- python字符串打印教学_python字符串格式化教你正确打印 : D