2019-06-13 11:57
@zhongloyal 还是不对,info(+) 这种东东从来就没有过
第一行文字中是黑黑的一行,里面没东西,如果提问都这么马虎,那回答者没有理由回复
回答者还在要求你如何将问题改对,要求提供信息量,这个是很不可思议的事情
2019-06-13 11:12
@bafurei 可能是 ubuntu 的少了字体文件,或者是图片 api 支持有问题
试试这个:
render(new com.jfinal.ext.render.CaptchaRender("_jfinal_captcha"));
也可以自己扩展一个 CaptchaRender 出来,然后
render( new MyCaptchaRender());
2019-06-12 22:46
@成陈 事务问题比较复杂,如果你用的 mysql , 首先要检查当前 table 是不是 InnoDb 引擎,myisam 引擎不支持事务
然后,你的 Db.tx 中有没有吃掉过异常,也就是说有没有 try catch,并且没有再次抛出异常
然后,Db.tx 中的数据库操作是不是将数据从数据库读到内存,然后在内存中操作,再写回数据库,这种操作需要的事务级别较高,例如:
Db.tx(...
int cash = Db.queryInt("select cash from account where id = ?", 123);
cash = cash + 100;
Db.update("update account set cash = ? where id = ?", cash, 123);
return true;
);
由于上面操作 cash 字段是先读到内存中进行,然后再存回数据库,所以需要的事务级别很高,否则会现现幻读
改进的办法是:
Db.tx(...
Db.update("update account set cash = cash + 100 where id = ?", 123);
return true;
);
也就是说,所有真正的数据操作全交给了数据库,不经过内存
2019-06-12 22:32
其实异常信息已经很明确了,只有 List、数组、Map 才可以使用 index 表达式
所谓 index 表达式是指带有方扩号和下标的表达式,例如: map[123]、list[456]
而你的 incApply 是一个 model , 是决然不能使用 index 表达式的
至于 Db.query 方法,当 select 后方只有一个字段时返回 List 《Object》,当有多个字段时返回 List《Object[]》
Db.query 方法将原值返回数据不进行封装, 而 Db.find(...) 方法将返回值封装到 Record 对象中去
其实这些东东,单步调试看一下变量类型就全清楚了
了解 jfinal 最好的办法就是单步调试,看程序在动态中的行为与数据
2019-06-12 17:57
@puzzle 存储过程要参考文档中的标准用法:https://www.jfinal.com/doc/5-16
2019-06-12 17:55
@iamdego
1:这里的 Blog、User 是所说的 Model
2:表关联这个地方,或许是 Model 中允许 new dao 出来的唯一的理由,其它情况都该在 Service 层中 new 出 dao 对象,文档中已补充了相关内容。以前写文档时没有考虑到这种情况,造成了矛盾
3:new User().dao() 是规范,由于 dao() 这个方法是 jfinal 后续版本添加的,所以文档没有及时更新这里
4:表关联方法写在 User extends Model 为好,因为在使用的时候调用更方便,而且在逻辑上属于数据库层面的事情,可以不必看成是业务有关的事(业务代码全写在 Service 中)
5:jfinal 的 Enjoy 引擎是与 Java 直接打通的,有方法就调,有public field 就取,不要犹豫