2018-04-26 17:46

@xufu123 莫非你也是美女? 俱乐部希望更多美女加入,谁不喜欢美

2018-04-26 13:19

@caicm PathKit.getWebRootPath() 就是获取项目本地代码的 webroot 路径的,如果没有获取到,很可能是你的项目配置有问题

一直就这么用的

2018-04-26 13:18

@溪碧旗 两万行记录更新,为什么不使用 Db.batch 系列的方法? 这个是专门用于批量操作的

2018-04-26 11:52

@团子sy getRender 为 null ,注意两点:
1: action 中必须调用过 render 系列的方法,否则不可能有 render 被创建
2: 上述拦截器中 getRender() 的调用必须在 inv.invoke() 后方,就像我上面给出的示例一样,inv.invoke() 处于前方

2018-04-26 11:50

可以配置外键的级联删除,程序就不用处理中间表记录的删除工作了

但很多项目都没有做外键关联,也就更谈不上在外键关联的基础上做级联删除了。

jfinal 之下,建议用 Db.delete("delete from role_user where roleId = ?", roleId) 这种方法删除数据

jfinal 不支持配置,需要手写一点代码,表关联的用法可以看看这里:
http://www.jfinal.com/doc/5-10

2018-04-26 11:48

PathKit.getWebRootPath()

2018-04-25 20:11

注意一下 myisam 引擎下执行 update 会造成表级锁

jfinal 所有数据库操作是直接转交给 JDBC 的,jfinal 对于数据库性能没有干预过,碰到性能问题一是从数据库上找,二是检查 sql 是不是本身就慢

2018-04-25 17:37

这个与 jfinal 没有关系,只与你运行 jfinal 的 tomcat jetty 这两个东东运行时的权限有关

有些人会让 tomcat jetty 运行在 root 权限之下,那么上传的东东就是 root 的

2018-04-25 17:36

重点在于,自己如果在 Handler 中处理过了,并且不想让 tomcat jetty 处理本次请求,得用下面一行代码:
isHandled[0] = true;

2018-04-25 17:35

大致改成下面的结构即可:
if(target.matches(regHtml)){
RenderManager.me().getRenderFactory().getRender(target).setContext(request, response).render();
isHandled[0] = true;
} else {
next.handle(target, request, response, isHandled);
}

2018-04-25 17:33

总体上来说,只需要将 target 中的 path var 转换成 jfinal 的 urlPara 就可以了,然后在 action 中可以通过 getPara(int) 来获取

2018-04-25 17:31

这个功能需要使用 Handler 来实现,用拦截器无法实现,Handler 的 handle 方法中第一个参数 String target,只要去改变这个 target 的值就可以实现

具体可以参考一下 com.jfinal.ext.handler 中的用法

2018-04-25 13:46

baseViewPath 是固定不变的,可以用一个拦截器实现,大致如下:
public void intercept(Invocation inv) {
inv.invoke();

Render r = inv.getController().getRender();
if (r instanceof TemplateRender) {
TemplateRender render = (TemplateRender)r;
render.setView(在这里改变 view1 为 view2);
}
}

2018-04-25 13:43

@cyf123 单步调试找出原因,问题的本质了解清楚了, 还出这个问题显然是不能靠猜解决的

2018-04-25 12:40

@cyf123 这个表需要指定主键,因为 active record 设计模式依赖主键的存在,否则 model.save() model.update() 等方法就不知道是对哪个记录进行操作了

如果确实不想增加主键,可以使用 Db + Record 模式来操作这张表,也很方便,通常一些关联表用 Db + Record