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

 

posted @ 2017-02-28 19:20  learcher  阅读(1445)  评论(0编辑  收藏  举报