标签:
描述:假设用户请求地址:http://xxx.action?date=2015-01-01. 假设action中已经存在了date属性,且类型为Date。当用户请求的参数格式为xxxx-xx-xx或者xxxx-x-x的时候,action可以正常的接收到日期类型,即string字符串可以自动转换为Date类型。但是当用户的请求为xxxxxxxx(20150101)的时候,action不能够转换为日期类型,且报错。这时候就需要自定义类型转换器来实现日期的转换。
问题解决:自定义类型转换器
package cn.itcast.type.converter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public class DateTypeConverter extends DefaultTypeConverter { @Override public Object convertValue(Map<String, Object> context, Object value, Class toType) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); try { if(toType == Date.class){//当字符串向Date类型转换时 String[] params = (String[]) value;// request.getParameterValues() 值是一个数组,因为要考虑到复选框的情况 return dateFormat.parse(params[0]); }else if(toType == String.class){//当Date转换成字符串时 Date date = (Date) value; return dateFormat.format(date); } } catch (ParseException e) {} return null; } }
package cn.itcast.action; import java.util.Date; public class HelloWorldAction {//?birthday=2008-10-10 private Date birthday; public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { System.out.println(birthday); this.birthday = birthday; } public String addUI(){ return "success"; } public String execute() throws Exception{ return "success"; } }
标签:
原文地址:http://www.cnblogs.com/kailing-con/p/4197301.html