日期:2014-05-17  浏览次数:20678 次

自定义的日期类型转换器总是出错?是怎么回事?
自定义了一个日期类型转换期总是出错,源代码如下

Java code
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;
import com.opensymphony.xwork2.conversion.TypeConversionException;

public class DateConverter extends StrutsTypeConverter {

    private  final DateFormat[] dfs = {  // 支持转换的多种日期格式
            new SimpleDateFormat("yyyy年MM月dd日"),
            new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("yyyy/MM/dd") }; 
    /**
     * 将指定格式字符串转换为日期类型
     */
    public Object convertFromString(Map context, String[] values, 
            Class toType) {
        String dateStr = values[0];// 获取日期的字符串
        System.out.println("datestr="+dateStr);
        
        // 遍历日期支持格式,进行转换
        for (int i=0;i<dfs.length;i++) {
            try {
                return dfs[i].parse(dateStr);
            } catch (Exception e) {
                System.out.println("第" +i+"个发生异常 ");
                continue;
            }        
        }
        
        //如果遍历完毕后仍没有转换成功,表面出现转换异常。
        throw new TypeConversionException("日期类型转换错误!");
        //throw new RuntimeException("转换错误");
        
        
        
        //return null;
    }


页面输入类似的1980-这样的格式的时候,页面就出现崩溃的那种错误....
请问这个到底哪里写错了呢?

------解决方案--------------------
LZ的输入长格式:如: 1980-03-05
------解决方案--------------------
你调用哪个方法报的错?你不会debug吗?报什么错。
------解决方案--------------------
不知道你其他的逻辑是啥
但是我知道你不输入正确的的日期格式的话
一定会执行 throw new TypeConversionException("日期类型转换错误!");这句

------解决方案--------------------
打印每个输入进来需要转换的日期看看~
------解决方案--------------------
检查一下 你输入的字符串格式 是否正确