开发者社区> 问答> 正文

getModel,字段里有Date类型遇到的麻烦。?报错

@JFinal ,我现在遇到一个麻烦,数据库oracle,表里有一个字段是Date,我们都知道oracle的date字段是存年月日时分秒的。但实际上我是要保存年月日就ok了,时分秒部分都是00:00:00就行了。页面上我放了一个日期选择框(第三方的UI),可以让用户输入一个日期,也可以选择一个日期,这个输入的日期是有年月日,没有时分秒。也就是说,传到后台的该字段只有类似yyyy-mm-dd部分。在后台,我getmodel的时候,就报错了。原本我想getmodel后,把这个字段手动调整一下,但现在根本不给我这个机会,getmodel的时候,就抛异常了。

当然,我可以在客户端让用户选择的时候是带时分秒的,但毕竟这个字段里不需要时分秒,界面看起来就会很别扭。

咋办?

展开
收起
爱吃鱼的程序员 2020-06-09 13:18:54 582 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

      如果你的日期类型是yyyy-mm-dd格式,getModel应该是支持,jfinal会对日期型参数进行长度判断,如果长度不包含时分秒的长,那么按yyyy-mm-dd去转换。所以,建议打开chrome看一下具体的请求参数是不是满足了yyyy-mm-dd格式。如果有问题,再来反馈,还可以继续深入解决封装得太狠就没有灵活性了

    <aclass='referer'target='_blank'>@JFinal,我刚刚跟踪了这个问题,客户端传递过来的model里出生日期字段传递过来的就是yyyy-mm-dd格式的,<imgsrc="http://static.oschina.net/uploads/space/2016/0718/110010_fvla_1464512.png"alt=""><spanstyle="font-size:10pt;line-height:1.5;">

    提交到后台,后台获得的日期也是2016-07-18,具体看图:

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/110433_5gSa_1464512.png"alt="">

    但执行到下一句,getModel的时候,会抛异常了,

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/110659_iDw9_1464512.png"alt="">

    <aclass='referer'target='_blank'>@Jfinal,你看看是不是有问题呢,还是我做的不对了?

    你用的jfinal老版本吧?新版本对日期型长度做了判断,你传入的日期长度太短的化会按Data去转,长的话才去按Timestamp去转。你用的哪个版本?

    <aclass='referer'target='_blank'>@JFinal,刚我又跟踪了代码,发现你的程序可能是没处理这个状况,看看代码:

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/112444_p4an_1464512.png"alt="">

    然后跟踪到convert方法里面,执行到如下代码了:

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/113038_mEsi_1464512.png"alt="">

    这里直接对传进来的日期字符串调用java.sql.Timestamp.valueOf方法,就抛异常了。因为格式不对,这里是不是应该判断一下s的长度,如果是yyyy-mm-dd,就强制并上00:00:00呢?

    <aclass='referer'target='_blank'>@JFinal我修改了这个代码,不知道会不会出问题,请你评估一下!

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/125859_e68X_1464512.png"alt="">

    我直接这样修改,编译成class文件后替换掉了jfnal2.0的jar包里,目前我自己在我的程序里测试是可以通过的,不知道这样写会不会有什么隐患,请波总指导评估一下!

    <divclass='ref'>

    引用来自“会哭的鳄鱼”的评论

    <aclass='referer'target='_blank'>@JFinal我修改了这个代码,不知道会不会出问题,请你评估一下!

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/125859_e68X_1464512.png"alt="">

    我直接这样修改,编译成class文件后替换掉了jfnal2.0的jar包里,目前我自己在我的程序里测试是可以通过的,不知道这样写会不会有什么隐患,请波总指导评估一下!

    回复<aclass='referer'target='_blank'>@会哭的鳄鱼:http://www.oschina.net/news/69461/jfinal-2-1-releasedhttp://www.oschina.net/news/69785/jfinal-2-1-finalhttp://www.oschina.net/news/70001/jfinal-2-2回复<aclass='referer'target='_blank'>@JFinal:能给个2.2的发布新闻链接吗?一时找不到了,jfinal主页上也没有回复<aclass='referer'target='_blank'>@会哭的鳄鱼:基本上可以平滑升级,要改变的地方不多,也很容易改,基本只是改改法法名之类的。具体要改的地方,看一下changelog,在osc的新版本发布新闻中有所有的changelog明白了!我的2.0下写的代码,可以无缝升级到2.2吗?我暂时不想用baseModel的bean类。并且,我的model都是我自己写的自动生成代码生成的。<divclass='ref'>

    引用来自“会哭的鳄鱼”的评论

    <aclass='referer'target='_blank'>@JFinal,刚我又跟踪了代码,发现你的程序可能是没处理这个状况,看看代码:

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/112444_p4an_1464512.png"alt="">

    然后跟踪到convert方法里面,执行到如下代码了:

    <imgsrc="http://static.oschina.net/uploads/space/2016/0718/113038_mEsi_1464512.png"alt="">

    这里直接对传进来的日期字符串调用java.sql.Timestamp.valueOf方法,就抛异常了。因为格式不对,这里是不是应该判断一下s的长度,如果是yyyy-mm-dd,就强制并上00:00:00呢?

    2020-06-09 13:19:13
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载