Spring MVC中对Date类型操作的一些问题解决

这次在做一个SpringMVC项目,碰到一个与Date类型有关的问题,感觉蛮烦人的:

在domain类中,有一个属性是Date类型,对其有相关联的增删改查功能 。

1、查询,发现查询格式有问题,不是和存储的'yyyy-mm-dd'格式显示的,刚开始想在存入数据库或者从数据库取出的时候做一些动作,后来发现并不现实,然后就想在domain类中,get方法那里对数据进行格式化,即返回一个格式成‘yyyy-mm-dd’的Date类型......这个想法问题就大了,经过一番折腾,发现,不可能把一个‘yyyy-mm-dd hh-mm-ss’的Date变成‘yyyy-mm-dd’的Date,Date类型就是Date类型,哪来的格式呢?格式化的只可能是输出的结果格式化。

解决:在domain类中,添加一个getXXStr方法,在这个方法里面对Date进行格式化,返回一个格式好了的String字符串。在前端调用查询时,直接value="XXStr"就可以。

	public String getObtainDateStr(){
		if(this.obtainDate != null){
			return DateUtils.FORMAT5.format(this.obtainDate);
		}
		return "";
	}
引用时:
<td class="am-hide-sm-only">${t.obtainDateStr}</td>


2、新增,在新增一条数据时,Date类型无法自动匹配。因为使用MyBatis中,mapper里直接返回了一个类的对象,而对于像Date、Double之类的,无法自动绑定。


解决:在controller层里,使用@InitBinder注解,手动绑定数据。

	@InitBinder
	public void initBinder(WebDataBinder binder) {
	    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
	    dateFormat.setLenient(false);
	    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
	}

SpringMVC在绑定数据之前,会先注册使用@InitBinder声明的编辑器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值