2018-11-04 15:18

用 jfinal 的 getFile() 彻底接管 ueditor 的那些个 jsp、jar 包,这个是最好的整合方案,感谢分享,赞一个

2018-11-04 15:16

升一下 druid 版本再试试看

2018-11-04 15:15

druid 有一个配置可以支持 8 小时闲置问题,具体是哪个忘记了,看一下它的官方文档, c3p0 是不建议使用的,太老了

2018-11-04 15:13

@zzjxfj 可以进入这里进行编辑:
http://www.jfinal.com/my/share

注意点击右侧的“编辑”按钮进行编辑

此外,为啥不使用模板引擎做生成,这样会更加简单方便,看一下 jfinal 的 BaseModelGenerator 这类生成器全走的模板引擎,不仅生成方便,扩展的话更方便,只要改改模板文件就可以扩展了

2018-11-04 15:10

@EATI001 由于基于 http 的所有参数本质上是先通过 String 传递的,所以 @Para 注解的 defaultValue 就沿用了 String,使用 Object 反而不知道该如何转换了

2018-11-04 12:31

@EATI001 全部用 String , jfinal 会帮你自动转换

2018-11-04 10:25

用 @Para 注解即可,例如:
public void action((@Para(value = "userName", defaultValue="james")String userName) {
...
}

2018-11-03 21:52

@蒙多 url 或者路径以及 href 这类值都要以 "/" 打头, 否则这些值会随着你的项目的 context path 不断变动,这个是 java web 规范决定的

所以,你的 "sear_list/" 得改成 "/sear_list/"。你的启动方式可能用到了 context path 值,所以要配置:
engine.setSharedObject("ctx", JFinal.me().getContextPath());

然后用的时候:
#@paginate(userPage.pageNumber, userPage.totalPage, ctx + "/sear_list/")

2018-11-03 20:00

通过 getRequest() 得到 HttpServletRequest 对象,然后调用里头的各种方法拼接即可,例如 request.getPort() 可获得端口号,getURL() getURI() 还能获取到更多有用的东东

2018-11-03 14:49

@itdoer jfinal 发布 7 年多以来,不断有人问起这个问题,在不同渠道回复这个问题起码重复过 100 次以上

既然这么关心这个问题,在此仅简要回答一下。自动扫描很多缺点:
1:安全性大大降低。第三方 jar 包中可以放点注解让你扫描成路由,然后就可以很轻松接管你的系统了。回看一下 springboot 项目动不动就上百个 jar 包,你敢确定上百个 jar 包中没给你来点路由注解让你扫描?

2:拖慢启动速度。路由扫描在大概率上慢 100 倍不止,启动速度在生产环境下不算大问题,但是开发环境就不同了,开发阶段启动花 2 秒与启动花 8 秒,这个开发体验是有很大差别的。要知道开发的时候改点东西重启项目是很频繁的,累积下来的时间是很可观的

3:代码量与学习成本双双增加。spring 那种在 action 上添加注解的方式,每个方法上都要来那么一下注解,而 jfinal 非注解方式每个 controller 仅一行代码即可配置一系列的路由。 此外,引入的注解的用法,你也是要花时间学习的,多多少少会有学习成本

4:无法为某个 controller 指定 viewPath

5:不支持 Routes 级别的 AOP,也即无法为某一批 controller 指定拦截器,如果你加入俱乐部得到 jfinal club 项目的话,就会体会到 Routes AOP 的妙处,节省代码无数

6:路由分散不利于统一管理。例如哪天你要重新规范路由,jfinal 在一处统一管理路由,要改下类似于一组 Controller 的 controllerKey 是极为方便的。即便是你只想改个别路由,你也得去找到具体的 controller 去翻找路由,这个时间相对要长。

7:路由分散也不便于统一查看。统一在一处的路由很方便去查看,浏览一下即可对全局路由心中有数,散落在各处的路由你得所有 Controller 全浏览一遍

8:统一的路由便于引导 restful 设计风格,统一路由将一个 controller 引导抽象成一个资源,所以就拥有了统一的资源名称,例如 AccountController 的资源名被引导为一个 "/account",这样避免了使用注解时的随意行为

简要说一下 jfinal 的路由配置有独有的优点:
1:支持 Routes 级别的 AOP
2:支持 Routes 级别的 baseViewPath
3:支持 Controller 级别的 viewPath
4:极速启动,在启动时一次性初始化,极有可能是目前最快的路由匹配方式

此外,你还谈到了 xml 配置,jfinal 的路由配置与 XML 有关本质的不同,前者是 java 代码,后者是外部文本配置,前者代码量极少,后者代码多且十分繁琐且易于出错

最后,这个问题本质是一个习惯问题,当然习惯确实难以改变,关键要看使用者是不是有一颗开放的乐意尝试新事务的心

2018-11-03 13:17

jfinal 3.5 最低要求 JDK 1.8,升下级 JDK

2018-11-03 12:50

@杜福忠 没错的,今天周六,经过上午的开发,只剩热加载这一个功能就开发完了

undertow-server 比 jetty 启动速度要快得多了,而且轻量级到了极致

2018-11-03 10:36

linux 字体的问题: http://www.jfinal.com/share/411

2018-11-03 10:35

参考 MysqlDialect 写一个 SybaseDialect,然后配置一下:
arp.setDialect(new SybaseDialect());

生成器也别忘了配置:generator.setDialect(new SybaseDialect());

如果不想扩展,可以用一下这个:
arp.setDialect(new AnsiSqlDialect());

AnsiSqlDialect 这个方言支持所有符合 ANSI 标准 sql 的数据库

2018-11-03 08:52

单步调试可知,查出来的类型是 Page,那么要使用 @糊搞 介绍的 page.getList() 方法直接获取,而不是强制转换