首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
修正JFinal getModel的一个BUG
Andydmx
2016-07-20 17:48
项目:
JFinal
1
评论区
JFinal
2016-07-20 21:32
从 !paraValue.toLowerCase().equals("null") 这个条件来说,"null" 有可能是正常的字符串,是允许 set 到 model 中去的。前些日子还有个老外故意将自己的名字改成 "null" 引发了住酒店等业务系统的bug,原因就是有不少系统将 "null" 字符串当成了 null 常量。 麻烦告知一下具体是什么问题? 如果有异常抛出,贴出一下具体的异常,感谢支持 jfinal 社区发展
回复
Andydmx
2016-07-27 11:29
@JFinal
是这样的,数据库也是PostgreSQL,主键是bigSerial,就是自动增加的长整数。添加一篇文章的时候,为了区分是新加还是编辑,在页面上有个隐藏字段,ID。在服务器端取到的值是null,通过Model.getModel取到的ID是null,保存数据库的时候,抛出主键异常。
我认为,在页面上,""和null都表示空,在WEB程序中,有的时候,还需要特出处理字符串“null”值。所以,在这里就认为,如果是"null"字符串,也认为是没有值。欢迎就这个问题讨论。
你说的问题确实存在,对于界面模型,可能他输入的字符串就是null。。。。。。。
这个地方或许真的值得商榷。
感谢JFinal作者。
回复
JFinal
2016-07-27 11:45
@Andydmx
严格来说 "null" 是字符串,null 是常量,这个是完全不同的概念,如果处理不当会出奇奇怪怪的问题。为了区分新加还是编辑,其实可以很简单地通过 id 是否为 null来判断一下,如果是 null 调用一下 model.remove("id") 然后再 model.save(),如果为非 null,直接 model.update() 即可
回复
Andydmx
2016-07-27 21:44
@JFinal
感谢JFinal作者,谢谢。
回复
jiulongting
2016-08-02 09:26
《
ddddddddddd
》
回复
Andydmx
2016-08-08 20:55
com.jfinal.core.Injector.java: injectModel(...)
Line 127:
try {
String[] paraValueArray = entry.getValue();
String paraValue = (paraValueArray != null && paraValueArray.length > 0) ? paraValueArray[0] : null;
if (StrKit.notBlank(paraValue)){
model.set(attrName, TypeConverter.convert(colType, paraValue));
}
} catch (Exception e) {
if (skipConvertError == false) {
throw new RuntimeException("Can not convert parameter: " + paraName, e);
}
}
回复
发送
我要分享
热门分享
扫码入社