2018-07-03 08:49

404 错误还是得严格检查路由的?并没有什么神奇的解决办法

2018-07-02 17:41

在线版本的 jfinal 文档才是最新的,pdf 版本很久没有更新过了,建议使用在线版本

2018-07-02 17:23

@猴子的花果山 model.save() update() 方法生成 sql 的时候是用的 Model.attrs 中的数据,而不会用到你手动创建的 String Name 这类属性的数据,所以就没效了

正确的做法是,在 setName(String name) 方法中再转一下调父类中的:
set("name", name);

当然,这些事情在 jfinal 中都是由生成器自动生成的,不用手写

2018-07-02 15:27

@猴子的花果山 得看你的 Model 内部是什么代码, jfinal 的 model 内部的 setter 方法本应该是转调 set(String, Object) 方法的

2018-07-02 15:27

jfinal 底层所有的数据库操作全部使用的 PreparedStatement,这个是天然防 sql 的,你还可以为 DruidPlugin 配置一个 WallFilter 进行双重防 sql 注入保护

在 jfinal 中操作数据库,你只避免手动获取 Connection 对象去操作数据库,就能避免注入问题

这种问题 jfinal 早就帮你想好了

2018-07-02 15:24

此外,可以配置 arp.setShowSql(true) 将 sql 语句输出到控制台,然后再 copy 这个输出的 sql 去 oracle 客户端执行一下,这样可以排除实际的 sql 有出入的问题

2018-07-02 15:24

一定可以的, jfinal 仅仅是将你的 sql + para 直接扔给了 JDBC,只要 JDBC 支持,jfinal 就一定会支持

估计是什么别的原因引起的,仔细分析一下异常信息来解决。 还有一种情况是 oracle 的驱动有问题,历史上出现过不少次数,升级下驱动即可

2018-07-02 11:37

实现极其简洁,对于开发者来说是透明的,在业务层完全不需要关注读写分离的事情,感谢分享,点赞 + 收藏

2018-07-02 11:32

主键名默认为小写的 "id",否则需要在映射的时候手动指定一下:
activeRecordPlugin.addMapping(tableName, "ID", modelClass);

如上所示,中间的参数 "ID" 就是大写的 id,具体到你的项目,是一个大写一个小写,改成这样:
activeRecordPlugin.addMapping(tableName, "Id", modelClass);

这种事情早在两年前就不需要手动做了,jfinal 提供了生成器,映射也是自动生成的,会自动解决大小写问题,在首页下载 jfinal demo,里面有生成器的使用例子,直接拿去改下几个参数即可使用

2018-07-02 11:29

@阿帕奇 将 JFinalView 中的下面两行代码:
OutputStream os = response.getOutputStream();
JFinalViewResolver.engine.getTemplate(getUrl()).render(model, os);

外面套上 try catch ,改成:
try {
OutputStream os = response.getOutputStream();
JFinalViewResolver.engine.getTemplate(getUrl()).render(model, os);
} catch (Exception e) { // 捕获 ByteWriter.close() 抛出的 RuntimeException
Throwable cause = e.getCause();
if (cause instanceof IOException) { // ClientAbortException、EofException 直接或间接继承自 IOException
String name = cause.getClass().getSimpleName();
if ("ClientAbortException".equals(name) || "EofException".equals(name)) {
return ;
}
}

throw e;
}


然后使用自己的 JFinalView 代替 jfinal 的 JFinalView 即可

2018-07-01 09:53

不需要特殊配置,按文档来即可

2018-06-29 18:14

JettyServer 这段代码历史太久远了,应该是六年前的代码,下次 jfinal 3.5 是该改进这里了

changeClassLoader 确实可以重用在 onchage 中,这个或许是当时这个方法是后来新增的,没注意到可以重用

jfinal 3.5 会尝试种不用 restart webapp 的方法来支持热加载,让开发体验更平滑

2018-06-29 18:09

@qin 是什么原因引起的,怎么解决的? 你这个问题很奇怪,值得分享出来啊?

2018-06-29 18:08

必然是支持中文的,这个是基本需求

2018-06-29 18:08

@阿帕奇 JFinalView 里头有关 ClientAbortException 这个改动过没有? 难道不改这个就解决了?