2019-12-06 23:32

@呜啦啦啦 多数是输出路径配置错误,其实已经生成了,只是生成在了项目之外,所以就看不到

2019-12-06 23:10

JFinal-layui 做得很用心,已经有同学用到公司企业级项目了,反馈很好

希望后续不断打磨,成为一个可以二次开发的平台性项目

2019-12-06 23:09

补充,要解决这个问题也可以仅仅只配置 IDEA,让当前模块所依赖的其它模块中的 sql 模板文件目录配置到当前 class path 中来

2019-12-06 23:08

sql 模板是从 class path 与 jar 中去找的,顺着这个思路,将不同子模块中的 sql 都让其处在当前运行模块的 class path 之中,或者 jar 包之中即可

参考这里的文件:
https://jfinal.com/doc/1-5

注意文档中第三小节的:《maven 多模块项目启动报错》。在启动模块中通过配置 undertow.resourcePath 来解决:
undertow.resourcePath=webapp, {修改为依赖的模块名}/src/main/webapp, src/main/webapp

当然,你的需求是要 class path 与 jar 包,所以,你的配置需要用到 "classpath: " 前缀,大致这样:
undertow.resourcePath=webapp, classpath:{修改为依赖的模块名}/src/main/webapp, ... 其它配置在此

undertow.resourcePath=webapp, /src/main/webapp, classpath:{修改为依赖的模块名}/src/main/resources

注意看 "classpath:" 这个配置中包含了你当前启动模块所依赖的其它模块的名称

2019-12-06 23:03

@flash866 每次到时间后任务会被调度,线程是从线程池中取出来用的,不是创建的新线程

2019-12-06 23:01

@chcode 空格问题头一回碰到,期待你后续的分享

2019-12-06 11:40

这个问题很重要,一会我补充一下文档

由于 addSharedFunction 在加载模板文件时会用到 SourceFactory 与 BaseTemplatePath 这两项配置中的变量,所以它们之间有先后次序

2019-12-01 15:04

@chcode getParaToXXX 方法一直都是调用的 getPara 方法,而不是调用的 request.getParameter,所以,何出此言:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/core/Controller.java

你这个方案确实好,简单而且性能比 handler 要好, 因为 handler 会接管所有请求,必然会拉低一点性能

有一个小建议, initParas 可以重构一下提升性能:
private void initParas() {
if (paras == null) {
boolean flag = getRequest().getMethod().equalsIgnoreCase(POST) &&
getRequest().getContentType().equalsIgnoreCase(CONTENT_TYPE_JSON);
if (flag) {
String rawData = getRawData();
paras = JSONUtil.parseObj(rawData);
}
}
}

2019-12-01 14:10

是字符串内容本身就有单引号,注意去除一下

jfinal 是不会自动加这个的,放心

2019-12-01 12:27

这个功能是专门针对开发模式而来的,用于在开发的过程中及时了解当前调用的情况,以便快速做出开发决策。

也就是说只在开发的时候输出,在部署的时候不输出。

输出到控制台这个动作对性能影响较大,不建议在生产环境下使用

你的需求可以使用下面两个办法:
1:做一个 MyHandler 继承 ActionHandler ,覆盖掉父类的 handle 方法,将 ActionReporter.report(target, controller, action); 这行代码切换到你自己的实现上去,你自己的实现就是指你希望针对个别 controller 不打印的功能。

做好以后在 configHandler(Handlers me) 中配置一下 me.setActionHandler(new MyHandler()),这样就可以将系统默认的 ActionHandler 给替换成你的 MyHandler 了

2: 另一个办法通过全局拦截器来输出你希望的数据,拦截器中有 inv.getControllerKey() 可以得知当前的 controller 是谁,也可以通过 inv.getController().getClass() 得知。

得知以后,通过 if 判断就可以跳过一些你不希望输出的东东了

2019-11-30 14:31

@chcode jfinal 几乎每一个组件都可以扩展,而且代码量极少, jfinal 是一个可以轻松完全掌控的 MVC + ORM + AOP 框架

代码在手,随心所欲

2019-11-30 14:17

@chcode 使用一个 MyHandler 来实现本贴中拦截器切换 request 对象的功能,大致如下:
public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandlec) {
if (request.getMethod().equalsIgnoreCase("post") && request.getContentType().contains("application/json")) {
WriteHttpServletRequestWrapper request = new WriteHttpServletRequestWrapper(request);
Map jsonParams = JSON.parseObject(HttpKit.readData(request), new TypeReference>() {});
request.init(jsonParams);
}

next.handle(request, response, isHandled);
}

简单来说就是将拦截器中要做的事情提前到 handler 中去做

2019-11-30 13:53

@chcode 最新版本是不是可以了?