数据库中是datetime
jsp页面提交的是String
而ActionForm中对象的属性是Date类型,这样就爆类型匹配错误
请问怎么解决这个问题啊?
改数据库的类型为varchar?

解决方案 »

  1.   


            //参数是Date啊,而且要会封装成actionform
    public void setBirthday(Date birthday)
    {
    this.birthday = birthday;
    }
      

  2.   

    我的项目中 entity下 时间的属性类型就是 Date ,数据库中是datetime  , 至于从页面提交过来的 把他从String转换为 Date 就好了
      

  3.   

    页面提交过来的时候是封装在ActionForm里面的。。封装的时候就出问题了。。还怎么转换?
      

  4.   

    数据库是datetime 实体类里日期定义成Date ,actionform里类型定义成String 在action去表单的值封装进实体类时把String转换date就行了,用下面的方法转换
     public static Date fomateStringDate(String str) {
    try {
    int index = str.indexOf(":");
    SimpleDateFormat df = null; if (index != -1)
    df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    else
    df = new SimpleDateFormat("yyyy-MM-dd");
    Date date = df.parse(str);
    return date;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return null;
    }我用过这个的!上个项目就是这么做的!调用这个方法返回的就是你要的日期了!
      

  5.   

    数据库用date类型前提下,推荐用date
    不需要关心时分秒,
    formbean: java.sql.Date;
    pojo: java.sql.Date(无须转换) 或者 java.util.Date(需转换)
    需要关心时分秒,
    formbean: java.sql.Date 或 String,均须转换
    pojo: java.util.Date转换方法参考楼上,
      

  6.   

    可能我比较懒点。
    我直接将数据库里的有关时间的字段,也都用字符串类型的。
    在将字段存入数据库前,获取当前时间(一般都是获取当前时间的吧)后再格式化成字符串类型存入数据库中
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String acceptdate=sdf.format(System.currentTimeMillis());个人觉得数据库的Date类型没多大作用。
    一方面在读取Date类型的函数时,经常得日期和字符串相互转换(to_date、to_char),很繁琐。
    另一方面在数据库中Date类型进行比较时,一般要转换成字符串型再进行比较,这样比较出来的结果才会更正确。
    还有,使用了po之后,即使在数据库中给Date赋初值sysdate,Date类型也只与po里的值相同,就算我们未给po赋值,但Date类型的值也与数据库里的初值的无关。
    所以在项目中我都用字符串类型来代替date类型。
      

  7.   


    ActionForm 里为什么不也定义成 datetime  呢?NewQuestionForm 里有 DateTerm 类型。
    NewQuestionAction 里也有 DateTerm 类型。DateTerm time = newQuestionForm.getTime();
    如果不这样 你也可以试试 
    DateTerm time = newQuestionForm.实体对象.getBirthday(); 也可以啊。
      

  8.   

    回LZ
       以前经常会遇到这样的问题,现在已经完全不是问题了~~
    最好的方法:
     数据库要设为DATETIME,
     ACTIONFORM设为String,
    进数据库时转下就好了
      

  9.   

    我在hibernate里的entity里映射的都是java.util.Date,所以就不用转换了。
    貌似hibernate3里就是这样映射的。
      

  10.   


    SimpleDateFormat df = null; 
    df = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date = df.parse(你前台传进来的字符串); 
    这样就搞定啦。然后放进数据库更不用你担心。你不是使用了hibernate吗?整个Date类型进去它会自动识别的
      

  11.   

    我方法里是String的,数据库是nvarchar的,自己写了个时间类,方便转换...
      

  12.   

    我从来都是把数据库中的时间设置为varchar 类型 方便啊 
      

  13.   

    对啊,其实用SimpleDateFormat这个类来把字符串转换成Date格式就可以了啊
      

  14.   

    struts2里面可以通过自定义类型转换来解决这个问题。可以去apache上面去看看,上面有demo
      

  15.   

    ActionForm中对象的日期属性给改成String就OK了
    ActionForm中对象的默认属性类型没有DATE类型吧