@JFinal ,我现在遇到一个麻烦,数据库oracle,表里有一个字段是Date,我们都知道oracle的date字段是存年月日时分秒的。但实际上我是要保存年月日就ok了,时分秒部分都是00:00:00就行了。页面上我放了一个日期选择框(第三方的UI),可以让用户输入一个日期,也可以选择一个日期,这个输入的日期是有年月日,没有时分秒。也就是说,传到后台的该字段只有类似yyyy-mm-dd部分。在后台,我getmodel的时候,就报错了。原本我想getmodel后,把这个字段手动调整一下,但现在根本不给我这个机会,getmodel的时候,就抛异常了。
当然,我可以在客户端让用户选择的时候是带时分秒的,但毕竟这个字段里不需要时分秒,界面看起来就会很别扭。
咋办?
如果你的日期类型是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呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。