Play1.x对于日期类型数据的请求和处理

来源:互联网 发布:联通免流软件 编辑:程序博客网 时间:2024/06/05 01:04
昨天帮一个前端同事调试一个play1.x中日期使用的问题,记录一下。
场景:前端传递采用JS生成的日期插件,做一个model的CRUD。

拿过来调试的时候报错:
Caused by: java.lang.IllegalArgumentException: Can not set java.sql.Timestamp field models.ActConfig.act_
start_time to java.util.Date

请求requst:
http://localhost:8080/actconfig/add?actConfig.act_name=test&actConfig.platform=web&actConfig.act_start_time=2015-01-14%2017:00:00&actConfig.act_end_time=2015-01-14%2017:00:00



看了一下model及数据库,act_start_time与act_end_time都是timestamp类型,
model的定义如下:

    @Column(name="act_start_time")    @As(format="yyyy-MM-dd HH:mm:ss")    public Timestamp act_start_time;
从异常信息来看,是进行类型绑定的时候出错了,前端请求过来的认为是java.util.Date
所以先将model修改如下:
    @Column(name="act_start_time")    @As(format="yyyy-MM-dd HH:mm:ss")    public Date act_start_time;
再次请求时发现已经没有异常,不过发现时分秒被截取了,以下是调用Date.toString()
act_start_time:Wed Jan 14 00:00:00 CST 2015,act_end_timeWed Jan 14 00:00:00 CST 2015

如此上面定义的    @As(format="yyyy-MM-dd HH:mm:ss")似乎没有作用啊。。。

google上搜索了"play date format",从这个问题的http://stackoverflow.com/questions/15697184/play-framework-pretty-print-date
的侧面,去看了application.conf的设置,
date.format=yyyy-MM-dd

将其修改为:
date.format=yyyy-MM-dd HH:mm:ss

更新后发现可以了
act_start_time:Wed Jan 14 17:00:00 CST 2015,act_end_timeWed Jan 14 17:00:00 CST 2015

总结:
1.model需要设置为java.util.Date
2.application.conf中需要设置date.format=yyyy-MM-dd HH:mm:ss(按具体需求格式)

0 0
原创粉丝点击