struts2表单提交Date数据无法接收
问题:在Struts2环境下,提交含有Date类型数据表单,但是在action中没有接收到;String就可以直接接收到;
--网络搜索后,说Struts2可以自己转,但是目前没发现有;
然后在狂搜,再然后我也丰富一下网库
解决主要两步:
第一步:创建一个时间装换类DateConverter
package com.trustel.common; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import ognl.DefaultTypeConverter; public class DateConverter extends DefaultTypeConverter { private String[] patterns = new String[] { "yyyyMMdd", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH:mm:ss", "HH:mm", "yyyy-MM-dd" }; @SuppressWarnings("rawtypes") public Object convertValue(Map context, Object value, Class toType) { try { if (toType == Date.class) { String dataStr = ((String[]) value)[0]; for (int i = 0; i < patterns.length; i++) { if (patterns[i].length() == dataStr.length()) { SimpleDateFormat f = new SimpleDateFormat((patterns[i]).toString()); return f.parse(dataStr); } } } else if (toType == String.class) { String dataStr = ((Date) value).toString(); return dataStr; } } catch (ParseException e) { e.printStackTrace(); } return null; } }
第二步:在项目src目录下创建文件:xwork-conversion.properties ,文件内容如下(具体类地址根据实际情况调整)
java.util.Date=com.trustel.common.DateConverter