错误内容:
Timestamp format must be yyyy-mm-dd hh����ss[.fffffffff]我知道是因为传入的值跟TypeConverter里面的timeStampPattern格式不一样导致的 但是咱们Jfinal有没有类似于SpringMvc的转换器..可以灵活的定义日期格式(如1991-11,可以先拼接成1991-11-01 01:01:01在进行转换) 求大神指点..
最简单的办法是将表字段类型改成 datetime,而不要使用 timestamp。datetime已经将时间精确到秒的级别了,一般是够用了。
如果应用比较特殊非要保存毫秒精度,一是页面传过来的日期按照格式来:yyyy-mm-dd hh:mm:ss[.fffffffff],如果不按格式来,可以将表单域的name改为另外的名,如xyz,然后 getModel()完事后,再 model.set(name, TimestampKit.toTimestamp(getPara("xyz"))自行转换后再 set 一下即可 ######回复 @jockiller : 感谢支持 jfinal 发展 ^_^######回复 @JFinal : 十分感谢 我再研究一下..祝愿jfinal越来越好######回复 @jockiller : 只需认准java类型为Date,然后找一个合适的oracle字段类型在JDBC规范下对应java 的Date就可以,我记得oracel的DATE 类型是可以对应上的,只不过貌似要设置合适的长度######回复 @jockiller : jfinal 有关java类型与数据库字段类型的互转,完全依赖于JDBC给出的类型,可以看一下 com.jfinal.plugin.activerecrod.TableBuilder中是通过jdbc反射得到的数据表字段对应的java类型。在转换的时候也按照了这个标准来进行######而且 还有一个地方 不是很理解..我的oracle数据库中这个字段是date类型,不是timestamp类型..但是 刚才打打断点clazz却是timestamp,这是为啥?######直接getStr过来自己转一下嘛######那样的话 getModule方法就没用了..###### 这里有个更详细的贴子,建议看一下:http://www.oschina.net/question/586193_241111###### getmodel取其他的数据。针对这个一个字段特殊处理。
没必要和自己较劲。 ######谢谢回答..不过最后通过下面这种方法解决的..######
else if (clazz == java.sql.Timestamp.class) { String value = s.trim().replaceAll("/", "-"); if(s.matches("^\\d{4}$")){ value=s+"-01-01 00:00:00"; }else if(s.matches("^\\d{4}-\\d{1,2}$")){ value=s+"-01 00:00:00"; }else if(s.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){ value=s+" 00:00:00"; }else if(s.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}")){ value=s+":00:00"; }else if(s.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){ value=s+":00"; }else if(s.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){ value=s; }else { throw new RuntimeException("timestamp pattern is not find.."); } result = java.sql.Timestamp.valueOf(value); }希望JFinal越来越好!! ######已经做过备忘,jfinal 2.1 会让 Timestamp 支持 yyyy-mm-dd 格式的数据######@JFinal : 老大 最后通过这种方式解决的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。