struts2自定义类型转换器
2015-09-08 22:17
573 查看
1.如果一些特殊的数据类型不能转换,那么需要自定义数据类型的转换器。 2.开发自定义类型转换的开发步骤 * 编写类型转换器 > 实现TypeConverter接口,实现一个方法 * Object convertValue(Map<String,Object> context,Object target, Member member,String propertyName,Object value,Class toType); > 继承DefaultTypeConverter类,重写一个方法 * Object convertValue(Map<String,Object> context,Object value,Class toType) > 继承StrutsTypeConverter类,重写两个方法 * Object convertFromString(Map context,String[] values,Class toClass) > 从字符串转换成具体类型 > values数组,存入的值就是用户输入的值(要转换的值 1981/12/1) > toClass 要转换的数据的类型 Date.class * String convertToString(Map context,Object o) > 把具体的类型转换成字符串 > o 代表的要转换的数据(Date类型的数据) > 注意:类型转换本身就是一个双向的过程: * JSP ---> Action String ---> 某个类型 * Action ---> JSP 某个类型 ---> String * 类型转换的代码,以 1990/10/10 为例,自定义日期转换器,完成转换,下面这段代码是第二种方法,也就是继承了DefaultTypeConverter类。 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; } * 注册类型转换器(包含两种方式) > 局部注册:针对某个表单中的某个字段生效的! * 属性驱动的方式:使用set方法接收数据 > 注意:在Action所在的包下创建一个文件,文件的格式是:Action类名-conversion.properties文件,该文件中配置要转换数据的字段和对应的转换器全路径 * 例如:birthday=cn.itcast.demo3.MyDateConverter * 模型驱动的方式:实现ModelDriven接口的方式 > 注意:在实体类所在的包下创建一个文件,文件的格式是:实体类名-conversion.properties文件,该文件中配置要转换数据的字段和对应的转换器全路径 * 例如:birthday=cn.itcast.demo3.MyDateConverter > 全局注册:针对整个项目的所有的日期类型都会生效的! * 在src的目录下,创建一个xwork-conversion.properties (名称是固定的) > 例如:java.util.Date=cn.itcast.demo3.MyDateConverter
相关文章推荐
- Struts2数据的封装
- 创建java线程方式之三实现Callable接口
- 线程池原理Java
- OpenJDK与HashMap……放心地教这个老家伙一些新(非堆!)技巧
- JAVA Socket地址绑定
- Java集合
- Struts2的文件下载
- 阅读《21天学通Java》
- Struts2的文件上传
- Java基础知识回顾
- struts2的自定义拦截器和配置
- java.lang.NoClassDefFoundError: JspException
- java序列化
- java内部类的使用小结
- javax.servlet.jsp.JspException cannot be resolved to a type
- Java中的常用类与集合框架(1)
- Java中的包
- SVN安装---本机安装---SVN 安装到eclipse中(6)
- Java学习积累one
- 插入排序java代码