2018-08-28 11:00

@jianghe727 这个是因为你前面的 acc.save() 与 后面的 Db.update 处在一个事务之中,事务未提交所以 acc.save() 还并未真正在数据库里面创建记录,所以后面的 Db.update 找不到 ids 参数,所以就不会生效了

解决办法是不要将 acc.save 与 Db.update 放在同一个事务中,具体做法是使用 Db.tx(...) 这种手动的方式对 acc.save() 部分做事务

然后 Db.update 另起一个事务

这个问题本质是因为 Db.update 中使用的 where 条件对于同一个事务中前面的 acc.save() 有依赖,并不是在 jfinal 中才会碰到的问题,使用任何一个 ORM 框架都会碰到这个问题

2018-08-27 23:21

有办法解决,今天太晚了,只简单说一下:
1: number 字段映射问题可以通过继承 MetaBuilder ,对于 BigDecimal 类型生成 Integer 或者 Long 类型。 MetaBuilder 中所有方法都是可以覆盖并定制的。具体到 oracle 的 number 类型,还可以得到其精度,选择生成 Integer、Long、BigDecimal

2:oralce 的字段一定要用下划线分隔,否则生成器生成 getter、setter 方法时就不好处理,因为生成器是无法知道你的多个单词的分界点的,除非先准备一个分词文件,然后利用分词器进行单词的分割,做到是可以做到,就是麻烦

CaseInsensitiveContainerFactory 这个不建议使用,如果要用也不建议传入 true/false构造方法的参数,让构造方法参数留空

3:date 格式这个,只要配置好 datePatter 就可以了,me.setJsonDatePattern(...)。 建议使用 jfinal 3.4版本,因为老版本的这个配置对于 JFinalJson 实现无效

2018-08-27 21:56

已分割完一个,为啥不会分割第二个呢? 代码都是一样的:
#set( ymxArray = x.yxm.split(",") )
#set( ksArray = x.ks.split(",") )

#for (int i=0; i < ymxArray.length; i++)
#(ymxArray[i])
#(ksArray[i])
#end

跟写 java 代码几乎没有区别

2018-08-27 21:53

代码缺失,注意在编辑时,可以点击文本编译器上的代码下拉按钮,可以直接写代码,不会丢失

在这里可以继续编辑该文章:
http://www.jfinal.com/my/feedback

注意点击右侧的编辑链接

2018-08-27 21:51

@derekchuncheng jfinal 是绝对不可能创建一个文件的,用排除法可以得知是其它代码创建了文件

2018-08-27 21:50

还想到一个办法,既然你这里是 javascript ,那么还可以用字符串相加来解决:
elem: '#' + 'end';

总之,解决的办法实在太多

2018-08-27 21:49

最好的办法是改一下名,不要使用 #end,例如:
elem: '#otherName'

2018-08-27 21:49

@猴子的花果山 原样输出指令可以一次性跨多行来解决,例如:

#[[
laydate.render({
elem: '#end' //指定元素 //这是第113行
});
#]]

可以像上面这样将大块的 js 代码原样输出一下,对于某些 layiu 中的指令如果有冲突,还可以通过换行解决,例如:
{{ #
if(...)
}}

上面的 layui 代码,其中的字符 '#' 与 "if" 不在同一行,enjoy 模板引擎也会将其当成纯文本,不进行解析

2018-08-27 21:47

@猴子的花果山 是冲突了,有很多办法解决,例如使用“原样输出” 指令就可以,看一下文档:
http://www.jfinal.com/doc/6-6

或者将 elem 指向的元素改一下名,不要使用 #end

又或者使用 jfinal 的输出指令当成字符串参数输出一下,例如:
elem: #("'#end'")

2018-08-27 21:45

下载首页的 jfinal demo ,直接导入到 IDEA 中,然后运行起来试一下

观察一下 jfinal demo 的结构,慢慢就会了

2018-08-27 21:43

@happyboy 毕竟还是 jfinal 开发的项目在部署时碰到问题,能帮就帮一下

2018-08-27 18:42

这里补充一个重要内容:如果你配置了 ClassPathSourceFactory,那么会在 linux 文件句柄打开过多,不能及时关闭

解决这个问题看一下这里:
http://www.jfinal.com/share/979

jfinal 3.5 已经改进过这里,此外,如果不配置 ClassPathSourceFactory 就不需要理会

2018-08-27 18:40

曾经有一个同学也碰到这个情况,最后排查是自己创建了文件

有一点是可以肯定的,jfinal 的文下载功能,是绝对没有帮你创建文件的,肯定是你自己的代码中某处生成了一个文件

2018-08-27 18:39

你的异常给的不全,异常中应该包含一个 ClassPathSource,是这个类在读文件的时候找不到

2018-08-27 18:37

@CrazyZH 你的程序在某处配置了
arp.getEngine().setSourceFactory(new ClassPathSourceFactory());

所以,引擎去 jar 包以及 class path 下面去寻找 sql 模板了,造成模板找不到,但从你上面给出的代码中看不出来你的配置,肯定是某个地方配置了,或者是自动编译没有打开