2019-06-13 11:57

@zhongloyal 还是不对,info(+) 这种东东从来就没有过

第一行文字中是黑黑的一行,里面没东西,如果提问都这么马虎,那回答者没有理由回复

回答者还在要求你如何将问题改对,要求提供信息量,这个是很不可思议的事情

2019-06-13 11:41

代码缺失,修改这个贴子,注意贴代码时,先选择左上角的 "代码语言" 这个下拉,然后选择 java

然后将代码复制到暗色的区域,就不会丢失代码

2019-06-13 11:32

在你的项目中发现了这个:
https://gitee.com/y2h/EnjoyMysql/blob/master/doc/jfinal_engine.txt

小小一页纸的内容,使用 enjoy 过程中碰到想不起来的地方时,翻看一下可以快速找到需要的知识点

极好极好

2019-06-13 11:32

在你的项目中发现了这个:
https://gitee.com/y2h/EnjoyMysql/blob/master/doc/jfinal_engine.txt

小小一页纸的内容,使用 enjoy 过程中碰到想不起来的地方时,翻看一下可以快速找到需要的知识点

极好极好

2019-06-13 11:12

@bafurei 可能是 ubuntu 的少了字体文件,或者是图片 api 支持有问题

试试这个:
render(new com.jfinal.ext.render.CaptchaRender("_jfinal_captcha"));

也可以自己扩展一个 CaptchaRender 出来,然后
render( new MyCaptchaRender());

2019-06-13 10:13

@Aizen 单步调试进入内部,看看发生了什么

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:35

@iamdego 看到你很多这方面的问题,加入俱乐部吧,大量可以帮助你的实际代码可以使用

一看全明白了,节省很多学习时间

2019-06-12 22:33

真正有用的异常信息没有贴出来

最有用的是 cause 这部分,才是原因

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 22:24

配置一下:
arp.setShowSql(true)

看一下最终生成的 sql 是什么样的,然后单步调试一下,看一下与该 sql 配套的 para 数组是什么样的

适当调整不对的地方即可解决

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 就取,不要犹豫

2019-06-12 10:43

有好多同学反馈 windows 下启动项目时打开的那个黑窗口不好看,这套简单的脚本切中用户心中的痛点

感谢你的分享