这段时间,我在网上看见,数据访问框架除了hibernate,还有不少的公司使用mybatis,边在网上下了mybatis,自己做一个springmvc+mybatis整合的小Demo,发现使用springmvc来处理时间好纠结,花了一天的时间,在网上找了大量的资料和看了官方的Demo,用了相对比较猥琐的办法,解决了问题!废话不多说,下面上菜:
首先,是显示问题,大家都知道springmvc会把数据库中查出来的Date时间,使用Jackson传到前台会转成毫秒数也就是一长串数字(如:“hiredate”:"142714380000000"),这个问题,我在网上看了很多前辈的解决办法,我都试过,但是很遗憾,都不适合我!没办法,只能想,在js中用个方法吧毫秒数转成正常的时间显示,如下
$.each(data,function(i,emp){
str+="<tbody align='center'><tr>";
str+="<td>"+emp.empno+"</td>";
str+="<td>"+emp.ename+"</td>";
str+="<td>"+emp.job+"</td>";
<strong><span style="color:#ff0000;">var newdate=jsondate(emp.hiredate);
str+="<td>"+newdate+"</td>";</span></strong>
});
就是这两行,其中jsondate(emp.hiredate)是个function方法,如下:
function jsondate(date){
var datetime = new Date(date);
var year=datetime.getFullYear();
//月份重0开始,所以要加1,当小于10月时,为了显示2位的月份,所以补0
var month = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
var hour = datetime.getHours()< 10 ? "0" + datetime.getHours() : datetime.getHours();
var minute = datetime.getMinutes()< 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
var second = datetime.getSeconds()< 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
return year + "-" + month + "-" + date+" "+hour+":"+minute+":"+second;
}
OK,上面的时间显示问题,算是解决了
接下来就是添加时的问题了,相信大家,如果第一次使用springmvc添加时间都会报错:
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
这种情况就是springmvc识别不了你输入的时间,导致转换不了,所以报错,别怕,解决的方法如下:
首先,需要下载一个joda-time-2.1.jar包,
然后在实体domain的时间类型属性上配置
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date hiredate;
OK,现在保存项目,再去运行,问题解决!