2020-06-10 12:31

@PL23K 这个需要贡献者提交代码,我自己没用过这些数据库,我提供的话担心会有不完善的地方

2020-06-10 12:30

com.jfinal.render 包下面的 Render 可以直接 new 出来,然后初始化一下就可以调用 render() 方法了

一般不建议这么用, @杜福忠 的办法更好

2020-06-09 23:09

@tctc4869 每个用户的请求处理都在独立的线程中完成,这些线程是由 tomcat、jetty、undertow 等容器保障的

每次请求,controller 对象会被重新创建,每个用户独享一个独立的 Controller 对象,自然也就不存在线程安全问题,就跟一个人单独访问的效果是一样的

Controller 每次被创建的代码在 ActionHandler 中的 controllerFactory.getController(...) 中

2020-06-09 19:44

@lyh061619 第一条补充有价值,第二条是为啥?

2020-06-09 18:55

Controller.getPara() 在底层调用了 HttpServletRequset.getParameter(...),调试跟踪进入 Controller 内部代码可以很清楚看到原理

2020-06-09 17:24

当然,你也可以使用 Date.after(...)、Date.before(...) 来比较日期的大小:

#if( data.record.send_date.before( data.record.task_end_date) )
...
#end

2020-06-09 17:23

文档已强调过不要在表达式中使用字符 '#':
https://jfinal.com/doc/6-4

注意看文档 6-4 最后一小节

此外,date 类型的数据不能直接使用比较表达式,但你可以这样来比较:

#if( data.record.send_date.getTime() > data.record.task_end_date.getTime())
...
#end

因为 Date 对象中有一个 getTime() 可以返回 long 型的代表它的时间值

2020-06-09 14:35

去掉引入时的 provided 配置

2020-06-09 12:54

@眼睛想旅行 既然升级,不如升到 4.9, 就差一个版本,但爽不少

2020-06-09 12:23

可能是你的 Model 没有生成 getter 方法,但是你使用了 fastjson 来转换,而 fastjson 转换是依赖于 getter 方法的

检查:
1:是不是配置了 me.setJsonFactory(new FastJsonFactory()),这能证明是在用 fastjson

2:检查 Contacts 是不是生成了 getter 方法,生成器在 jfinal 官网首页的右侧可以下载 jfinal_demo_for_maven.zip,里面有现成的,直接可用

3:打个断点,看看 Page contanct 中的数据查没查到

2020-06-09 12:17

@myth4ian tomcat 在输出信息中的措辞是:probable memory leak.

也就是说,它也只是说可能的内存泄漏,其实是没有的,这个地方我做过很严格的测试,放心使用

2020-06-09 11:21

@myth4ian 没有内存溢出, 注意看 tomcat 输出信息的措辞

2020-06-08 18:15

@wrw 负载均衡看用在什么层面了,一般 redis 层面不需要负载均衡

2020-06-08 18:01

@qianlong 其实有很多办法,稍微了解一下 jfinal 源码就能找到很多办法

参考 jfinal club 中的 Share.java 这个类,里头用到了 filter 方法,也是可以的