struts2教程(4)--类型转换
来源:互联网 发布:中兴通讯讲师 知乎 编辑:程序博客网 时间:2024/06/06 05:30
Struts2类型转换
1、 struts2内部提供大量类型转换器,用来完成数据类型转换问题
boolean 和 Boolean
char和 Character
int 和 Integer
long 和 Long
float 和 Float
double 和 Double
Date 可以接收 yyyy-MM-dd格式字符串
数组 可以将多个同名参数,转换到数组中
集合 支持将数据保存到 List或者Map集合
案例: 输入合法年龄和生日可以自动转换
当输入abc 转换为 int类型age时
Caused by: java.lang.NoSuchMethodException: cn.itcast.struts2.demo3.CustomerAction.setAge([Ljava.lang.String;
分析: 输入20,转换int类型20 --- setAge(int)
输入abc,转换int出错---- setAge(String) -----报错方法不存在异常
自定义类型转换器
1) 自定义类型转换器
第一种 实现TypeConverter接口
convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object target, java.lang.reflect.Member member, java.lang.String propertyName, java.lang.Object value, java.lang.Class toType)
第二种 继承 DefaultTypeConverter
convertValue(java.util.Map<java.lang.String,java.lang.Object> context, java.lang.Object value, java.lang.Class toType)
第三种 继承 StrutsTypeConverter
convertFromString(java.util.Map context, java.lang.String[] values, java.lang.Class toClass) --- 请求封装convertToString(java.util.Map context, java.lang.Object o) --- 数据回显
类型转换器 一直都是双向转换
页面提交请求参数,封装到model --- 需要转换
model数据 需要在页面 回显 ----需要转换
2) 以 1990/10/10为例,自定义日期转换器,完成转换
public Object convertValue(Map<String, Object> context, Object value,Class toType) {// 根据toType判断 是请求封装 还是 数据回显DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");if (toType == Date.class) {// 请求参数封装 (value是字符串)String[] params = (String[]) value;String strVal = params[0]; // 转换为 日期类型try {return dateFormat.parse(strVal);} catch (ParseException e) {e.printStackTrace();}} else {// 回显(value是 Date)Date date = (Date) value;return dateFormat.format(date);} return null;}
3) 注册类型转换器
局部注册 :只对当前Action有效 (针对属性)
全局注册 :针对所有Action的日期类型有效 (针对类型 )
局部注册 :在Action类所在包 创建Action类名-conversion.properties ,格式 : 属性名称=类型转换器的全类名
全局注册 :在src下创建xwork-conversion.properties,格式 : 待转换的类型=类型转换器的全类名
类型转换错误处理
通过分析拦截器作用,得知当类型转换出错时,自动跳转input视图 ,在input视图页面中<s:fieldError/>显示错误信息
在Action所在包中,创建ActionName.properties,在局部资源文件中配置提示信息 :invalid.fieldvalue.属性名=错误信息
- struts2教程(4)--类型转换
- struts2类型转换(局部类型转换)
- 详解Struts2的类型转换(4)
- (二)struts2类型转换
- struts2类型转换(二)
- (8)Struts2类型转换
- struts2(五)类型转换
- Struts2(十四):类型转换
- Struts2(十一)---类型转换
- 4 Struts2类型转换(二)----集合类型
- Struts2的类型转换(二)集合类型的转换
- 【Struts2】:Struts2的类型转换
- struts2学习(一)类型转换--DefaultTypeConverter
- Struts2复习(二)类型转换详解
- SSH学习(四)Struts2类型转换
- Struts2总结---类型转换 (12)
- 详解Struts2的类型转换(1)
- 详解Struts2的类型转换(2)
- Hiho1507 : 可疑的记录
- 《啊哈!算法》简单桶排序(Simple Bucket Sort)
- 紫书例题6-2 UVa 514 ( 栈
- 放开数据线,让wifi来!AndroidStudio使用adb wifi调试
- 浅谈hibernate的sessionFactory和session
- struts2教程(4)--类型转换
- python操作Excel读写--使用xlrd/xlwt
- GitHub仓库的建立和删除
- NYOJ—动物统计【字典树】
- NXP PN53x系列芯片介绍
- Visio 2016 和 SharePoint Designer 2013 来创建工作流并将其发布到 SharePoint 2016 网站而无需任何代码
- MyEclipse中package explorer过滤掉关闭后的项目
- cJSON学习笔记
- 字符集与编码六之getBytes方法及乱码初步