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

2018-04-24 21:02

@jim19770812 进入个人空间,再点击我的分享,再点一下右侧列表中的修改就可以修改了

2018-04-24 19:51

已提交 issue,会核实并处理:
https://gitee.com/jfinal/jfinal-weixin/issues/IJBHU

感谢你的反馈

2018-04-24 12:48

详细异常信息要在控制台去看,如果控制台也没有输出,得配置好 log4j.properties 文件,在首页下载 jfinal demo,里头有现成的配置文件可以直接用

2018-04-23 21:14

比 jfinal demo 要完善很多,感谢分享