2019-06-13 15:32

更规范的代码是:
Engine engine = Engine.use();
engine.setDevMode(true);
engine.getTemplate(indexTempletePath).render(map, indexPath);

2019-06-13 15:31

Engine engine = new Engine() 这行代码改成:
Engine engine = Engine.use();

否则你后续的 engine.use().getTemplate(indexTempletePath).render(map,indexPath) 这行代码中使用的 Engine 对前与你前面 new Engine() 创建的 Engine 完全无关

java 基础

2019-06-13 12:08

@bafurei jfinal 的 Controller.render(Render render) 方法是开放式结构,可以任意扩展出自己需要的 Render

默认的 CaptchaRender 无法在你的 ubuntu 上使用,找一个第三方的代码扩展出一个 MyCaptchaRender 出来就挺好

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 数组是什么样的

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