问题:在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