2019-09-10 17:50

Template 是线程安全的,所以在 enjoy 内部 Template 对象是被缓存的,被缓存可确保模板只被解析一次,后面可以无数次去使用

确保线程安全的主要措施就是:将不是线程安全的参数通过 render 方法参数传递进去,例如:
Template.render(Map data, Writer writer);

上面的 data、writer 参数线程不安全,所以让其通过 render 方法传入,确保了非线程安全参数与 Template 对象的分离,从而确保了 Template 可以采用线程安全设计并缓存,从而可以极大提升效率

2019-09-10 17:43

@1659811173 在这个页面按一下 ctrl + F 组合键,再输入 spring ,删完 spring 再输入 jfinal

你会发现,你提供的异常信息中,既不包含 spring 也不包含 jfinal

在这种信息量之下,神仙也不可能知道你在问什么

这个还不是知不知道如何解决的问题, 而是根本不知道你在问什么的问题

2019-09-10 15:53

这个配置与验证码完全无关,肯定是别的问题,细心排查一下

2019-09-10 15:52

@flash866 加入了俱乐部,俱乐部有一套专享代码,所以他手头就有了 @haoxiguan

肯花点小钱投资自己的,恰恰才是最能为自己省钱的,时间才是最大的成本

2019-09-10 12:18

其实这类问题,只要是从官网下载 jfinal_demo_for_maven,从中获取 pom.xml 中的插件,就不会出错

2019-09-10 12:17

将 "compilerArguments" 改成 "compilerArgument" 即可

也即,去掉 compilerArguments 最后面的字符 's'

2019-09-10 12:15

这个问题确实是这样

redirect 这个功能历史很久了,后面想改为支持 baseViewPath 会有兼容性问题

好在 redirect 用得还不算多

2019-09-10 12:09

@tyk1994 是否能在工作中使用 jfinal 并不是最重要的,更重要的是你能从 jfinal 的源码、设计中获取到价值,这些收获用到 spring 开发的项目中一样有用

如果自己做自己的东西,可以用 jfinal ,有不少人用 spring 是因为公司强制

此外,在 spring 中可以用上 jfinal 的 enjoy 以及 active record 模块,这两个模块早已独立成单独的项目,可以直接引入 maven 依赖来使用

2019-09-09 22:42

可能是有外部请求将你所在 ip 的服务器当成是代理服务器,或者是你所使用的 ip 以前为外部提供 API 服务

因此,有些外部请求仍然导向了你的 ip,这些请求被 undertow 接收到,并被处理成了异常

这种情况很少,只有两三个同学反馈过,我自己从来没有碰到过

你可以追踪一下请求来自的 ip,屏蔽掉这些请求,不建议处理,顶多只是通过配置 log4j.properties 忽略这类异常

2019-09-09 17:21

@Gevin 看一下 class path 下面有没有 MyConfig.class 文件,可能是自动编译没有打开

异常提示找不到这个 .class 文件,可能是真找不到,所以去看看现场:
target/classes 下面去看看

2019-09-09 17:14

@walking_ action 是最细粒度的存在,所以将所有动作的权限都与 action 建立起来以后问题都解决了

你前面提到的场景应该也可以在这个方案下去满足,你再多想想如何让其融入到当前的方案之下

2019-09-09 16:40

@walking_ 让界面中的每一个动作都对应后端的一个 action, 一一对应用统一管理起来,多看看 jfinal club 中的用法

2019-09-09 16:17

@zxh166 这个问题无法解释,你用别的数据试试看:
map.put("msg", "ok");
renderJson(map);

2019-09-09 15:57

@zxh166 到底是什么错误? 你的提问中并未明确说明是什么错误

此外,用一用 renderJson("flag", 1);

注意 "1" 与 1 是不同的,前者是字符串

2019-09-09 15:40

@zxh166 jfinal 2.2 版本太老了,但用法还是一样的, renderJson 这个方法很早就有了,打断点单步调试一定可以解决的,调试进入 JsonRender.java 内部去