2019-11-08 15:23

价格低了

2019-11-08 15:22

jfinal 十分重视版本兼容性,2.1 升到 4.3 很轻松,官网还提供了详细的升级文档:
https://www.jfinal.com/doc/14-1

2019-11-08 15:20

@鼻涕刘o0 高版本 jfinal 为了 tomcat、jetty 下的安全性,默认无法直接访问 JSP 文件,需要配置一下才可以直接访问:
public void configConstant(Constants me) {
me.setDenyAccessJsp(false);
}

2019-11-08 15:19

JFinal + ActiveMQ 的分享极为稀有,谢谢你的分享,赞

2019-11-08 15:18

贴主认为 "不用继承" 是属于轻量级框架的一个特征,这个肯定是误解

spring、struts 这类 web 框架的 controller 确实可以不用继承就可以实现,但是必然会在 action 中出现对于类似于 ActionContext、ActionSupporter 等等之类的组件的依赖

也就是说,侵入性只是换了一种方式,但是不可能完全消除

从根本上来说,你使用某个框架,就必然对其组件有所依赖,也就必然有侵入性,只是侵入的方式有所不同

那么我们所说的追求的少侵入性或者无侵入性到底是什么呢?
做好业务层,让业务层对框架无依赖,这个在侵入性方向的努力才是对的,业务层在未来可以拆分出来换到不同的 web 框架中使用

最后,退一步讲,极少情况会出现将 controller 中的代码迁移到另一个 web 框架中使用的情况,所以完全无侵入性其实没有什么意义

继承可以带来很多好处,试用一下 jfinal 的 controller 就会知道,一个简单的继承立即拥有了十分之多的可用方法,让开发变得非常便捷

2019-11-08 15:09

参考这篇文章中的回复,十分详细:
https://www.jfinal.com/feedback/3500

2019-11-08 15:08

先检查一下是不是 sql 有错误:在 mysql 控制台先手动执行一次该 sql

确认 sql 没问题以后,注意这个异常:
java.sql.SQLException: sql injection violation

或许是你用的 druid 的 WallFilter 拦截了该 sql,认为该 sql 是有危险的,去除 WallFilter 试试

2019-11-08 15:06

异常提示:
Posted content type isn't multipart/form-data,

检查提交是不是被做了 302 重定向:
https://www.oschina.net/question/816381_108867
https://www.oschina.net/question/941098_93842

2019-11-08 15:04

谢谢分享

2019-11-08 15:01

肯定是拦截器拦截了该请求,t1() 方法中的 renderNull() 并未真正被调用,单步调试验证一下

2019-11-08 15:00

跨库事务是分布式事务的范畴,jfinal 目前不支持分布式事务

分布式事务建议使用 sharding jdbc 这类中间件来解决

2019-11-08 14:59

@xiaoxxin6140 @爱小乖 在使用 SessionInViewInterceptor 时再多传入一个 true 参数,例如:
me.add(new SessionInViewInterceptor(true));
传入 true 参数是让拦截器在获取不到 sesion 对象时,立即创建一个,进而这个 session 永远不为 null,进而 session.user 才不会抛出空指针异常

如果不传入这个 true 参数,那么使用的时候需要用双问号表达式,例如:
#if(session.user ?? !=null)
因为双问号表达式可以在 session 为 null 时避免空指针异常,双问号表达式的文档见这里:
https://www.jfinal.com/doc/6-3

2019-11-08 14:55

@简单代码 jfinal club 中的 JsoupFilter.java 已经解决过了,参考 jfinal club 中对于 JsoupFilter 的使用方法

简单来说就是按一定规则将恶意部分过滤掉

2019-11-08 14:52

应该是 shiro 配置的问题,异常提示:
Caused by: java.lang.IllegalArgumentException: argument type mismatch

参数类型不匹配

2019-11-08 14:50

@smileForLife 使用 return 返回模板需要用拦截器稍做点扩展,例如:
public MyInterceptor implements Interceptor {
public void intercept(Invocation inv) {
inv.invoke();
Object ret = int.getReturnValue();
if (ret instantceof String) {
inv.getController().render(ret.toString());
}
}
}

然后将这个拦截器配置为全局拦截器:
public void configInterceptor(Interceptors me) {
me.add(new MyInterceptor());
}