struts2---自定义类型转换器
Posted bluedarkni
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2---自定义类型转换器相关的知识,希望对你有一定的参考价值。
从servlet我们知道从页面获取到的参数都是string类型,但是struts2中基本的数据类型,它可以自动帮我们转化为其对应的包装类,就像获取到123,可以自动转化为Integer,但是比如2017-09-28这种字符串想要转化为Date,便不能自动转化,需要我自己定义类型转化器。
继承DefaultTypeConverter,重写convertValue方法
全局的类型转换器:
放在src目录下,文件名 xwork-conversion.properties 内容:转化为某个类 = 转换器 (java.util.Date=com.bwf.action.DateConversion)
局部:(只对某个action中进行自动转化)
和action同级,文件名 action名字-conversion.properties 内容:某个成员变量 = 转换器
配置文件:
java.util.Date=com.bwf.action.DateConversion
转换器:(DateConversion)
import java.lang.reflect.Member; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import ognl.DefaultTypeConverter; //import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class DateConversion extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object target, Member member, String propertyName, Object value, Class toType) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); if(toType == Date.class){ String[] values = (String[])value; try { Date date = simpleDateFormat.parse(values[0]); return date; } catch (ParseException e) { e.printStackTrace(); } }else if(toType == String.class){ Date d = (Date)value; return simpleDateFormat.format(d); } return null; } // @Override // public Object convertValue(Map<String, Object> context, Object value, Class toType) { // // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); // if(toType == Date.class){ // String[] values = (String[])value; // try { // Date date = simpleDateFormat.parse(values[0]); // return date; // } catch (ParseException e) { // // e.printStackTrace(); // } // // }else if(toType == String.class){ //结合ognl表达式 用于回显为字符串 // Date d = (Date)value; // return simpleDateFormat.format(d); // } // // return null; // // } }
<s:property value="createTime"/> 将时间对象回显为字符串
以上是关于struts2---自定义类型转换器的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记67:Struts2 学习之路-- 类型转换概述, 类型转换错误修改,如何自定义类型转换器