Struts2---类型转换
来源:互联网 发布:ipcam监控软件下载 编辑:程序博客网 时间:2024/06/02 01:58
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.属性名= 错误信息
0 0
- 【Struts2】:Struts2的类型转换
- struts2类型转换
- struts2类型转换续
- Struts2的类型转换
- struts2 类型转换流程
- Struts2中的类型转换
- [struts2]类型转换笔记
- struts2的类型转换
- Struts2之类型转换
- struts2的类型转换
- struts2 类型转换
- struts2 类型转换
- Struts2类型转换
- struts2日期类型转换
- struts2类型转换
- Struts2类型转换
- Struts2的类型转换
- Struts2日期类型转换
- 【Java基础】线程和并发机制
- Java实现文本按照自然段落进行切分
- Map遍历
- 背包、队列、栈
- 悲壮的码字僧(研究生)艰辛写作路(PS:-学渣开启学霸模式)
- Struts2---类型转换
- Redis 学习之主从复制
- [LeetCode] Roman to Integer 解题报告
- Android-UI-绘制
- Android平台Native开发与JNI机制
- 求二叉树的先序遍历
- 如何进行Sublime Text插件的升级和卸载?
- 如何快速转载CSDN中的博客
- tar 使用