SSH框架时间问题 数据库中是datetimejsp页面提交的是String而ActionForm中对象的属性是Date类型,这样就爆类型匹配错误请问怎么解决这个问题啊?改数据库的类型为varchar? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //参数是Date啊,而且要会封装成actionform public void setBirthday(Date birthday) { this.birthday = birthday; } 我的项目中 entity下 时间的属性类型就是 Date ,数据库中是datetime , 至于从页面提交过来的 把他从String转换为 Date 就好了 页面提交过来的时候是封装在ActionForm里面的。。封装的时候就出问题了。。还怎么转换? 数据库是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; }我用过这个的!上个项目就是这么做的!调用这个方法返回的就是你要的日期了! 数据库用date类型前提下,推荐用date不需要关心时分秒,formbean: java.sql.Date;pojo: java.sql.Date(无须转换) 或者 java.util.Date(需转换)需要关心时分秒,formbean: java.sql.Date 或 String,均须转换pojo: java.util.Date转换方法参考楼上, 可能我比较懒点。我直接将数据库里的有关时间的字段,也都用字符串类型的。在将字段存入数据库前,获取当前时间(一般都是获取当前时间的吧)后再格式化成字符串类型存入数据库中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类型。 ActionForm 里为什么不也定义成 datetime 呢?NewQuestionForm 里有 DateTerm 类型。NewQuestionAction 里也有 DateTerm 类型。DateTerm time = newQuestionForm.getTime();如果不这样 你也可以试试 DateTerm time = newQuestionForm.实体对象.getBirthday(); 也可以啊。 回LZ 以前经常会遇到这样的问题,现在已经完全不是问题了~~最好的方法: 数据库要设为DATETIME, ACTIONFORM设为String,进数据库时转下就好了 我在hibernate里的entity里映射的都是java.util.Date,所以就不用转换了。貌似hibernate3里就是这样映射的。 SimpleDateFormat df = null; df = new SimpleDateFormat("yyyy-MM-dd"); Date date = df.parse(你前台传进来的字符串); 这样就搞定啦。然后放进数据库更不用你担心。你不是使用了hibernate吗?整个Date类型进去它会自动识别的 我方法里是String的,数据库是nvarchar的,自己写了个时间类,方便转换... 我从来都是把数据库中的时间设置为varchar 类型 方便啊 对啊,其实用SimpleDateFormat这个类来把字符串转换成Date格式就可以了啊 struts2里面可以通过自定义类型转换来解决这个问题。可以去apache上面去看看,上面有demo ActionForm中对象的日期属性给改成String就OK了ActionForm中对象的默认属性类型没有DATE类型吧 Hibernate Junit测试增删改查 java 运行excel sql面试题 请看图 关于Session的问题 Tomcat 项目子目录绑定域名问题 模态窗口传值的具体细节问题= = 大家开发软件时用的eclipse还是myeclipse 关于使用Hibernate进行动态表名映射 有关返回参数问题,请进! 如何用jdom生成xml文件中的名字空间 高分求教。 javaMail简单的发送邮件例子 在线急等 我实验成功就揭贴 100分
//参数是Date啊,而且要会封装成actionform
public void setBirthday(Date birthday)
{
this.birthday = birthday;
}
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;
}我用过这个的!上个项目就是这么做的!调用这个方法返回的就是你要的日期了!
不需要关心时分秒,
formbean: java.sql.Date;
pojo: java.sql.Date(无须转换) 或者 java.util.Date(需转换)
需要关心时分秒,
formbean: java.sql.Date 或 String,均须转换
pojo: java.util.Date转换方法参考楼上,
我直接将数据库里的有关时间的字段,也都用字符串类型的。
在将字段存入数据库前,获取当前时间(一般都是获取当前时间的吧)后再格式化成字符串类型存入数据库中
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类型。
ActionForm 里为什么不也定义成 datetime 呢?NewQuestionForm 里有 DateTerm 类型。
NewQuestionAction 里也有 DateTerm 类型。DateTerm time = newQuestionForm.getTime();
如果不这样 你也可以试试
DateTerm time = newQuestionForm.实体对象.getBirthday(); 也可以啊。
以前经常会遇到这样的问题,现在已经完全不是问题了~~
最好的方法:
数据库要设为DATETIME,
ACTIONFORM设为String,
进数据库时转下就好了
貌似hibernate3里就是这样映射的。
SimpleDateFormat df = null;
df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(你前台传进来的字符串);
这样就搞定啦。然后放进数据库更不用你担心。你不是使用了hibernate吗?整个Date类型进去它会自动识别的
ActionForm中对象的默认属性类型没有DATE类型吧