2020-06-10 17:02

@jfinal初识 我给的代码是我的用法,你可以直接 return true

public static DruidStatViewHandler getDruidStatViewHandler() {
return new DruidStatViewHandler("/assets/druid", new IDruidStatViewAuth() {
public boolean isPermitted(HttpServletRequest request) {
return true;
}
});
}

这里是给了你一个可以控制访问者权限的接口,怎么控制就看你的想象力了,不想控制就无条件 return true;

2020-06-10 16:20

@xiuxiu-xiuxiu jfinal 项目是标准的 java web 项目,也是标准的 maven 项目

所以, IDEA 不能加载配置的问题肯定是与 jfinal 无关的

你开发传统的 "非jfinal" 项目,一样也会碰到这种问题

最简单的办法:
1:先将项目从 IDEA 中移除

2:在资源管理器里面,删掉项目的所有目录与文件,只保留 pom.xml 文件与 src 目录。

注意:这一步是为了删干净 IDEA 为项目生成的一些配置,以及自己折腾出来的一些配置。这些配置就是出问题的根源

再注意:注意删掉那些 IDEA 生成的隐藏的配置文件

3:再使用 IDEA 导入项目,让 IDEA 重新为项目生成各种配置。

特别注意:导入的时候,要走 maven 项目导入向导,注意要走向导,注意要走 maven 项目向导,重要的事情说三次。这样是为了让 IDEA 为你生成合适的配置文件

4:直接启动项目,不要做任何其它配置,因为我担心你折腾出一些破坏性配置,然后再来怪罪 jfinal

再次重申:上面的一切都与 jfinal 无关,我只是出于热心告诉你一些 IDEA 的使用技巧

2020-06-10 16:14

@谢 jfinal 的方案要考虑的事情比这多多了,建议用官方的方案,适应性更好

2020-06-10 15:40

补一下,还需要为 DruidPlugin 添加一个 filter:
druidPlugin.addFilter(new StatFilter());

2020-06-10 15:39

jfinal 俱乐部项目的配置如下:
public void configHandler(Handlers me) {
me.add(DruidKit.getDruidStatViewHandler()); // druid 统计页面功能
}

public static DruidStatViewHandler getDruidStatViewHandler() {
return new DruidStatViewHandler("/assets/druid", new IDruidStatViewAuth() {
public boolean isPermitted(HttpServletRequest request) {
String sessionId = getCookie(request, LoginService.sessionIdName);
if (sessionId != null) {
Account loginAccount = loginSrv.getLoginAccountWithSessionId(sessionId);
return AuthCacheClearInterceptor.isAdmin(loginAccount);
}
return false;
}
});
}

访问地址:
localhost/assets/druid

按照上面的办法基本照抄就可以

2020-06-10 14:48

配置: me.setJsonDatePattern("yyyy-MM-dd HH:mm:ss")

功能早就有了,就看你用不用

2020-06-10 12:32

看不出是什么问题,而且异常信息中完全没有 jfinal 的字眼,不好判断

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 配置