2019-06-22 16:25

在 java 代码中使用 sql 模板的另一个好处是,可以实现类似于参数命名的功能,从而减少参数的传递,例如:
Db.templateByString("select * from t where x = #para(value) and y = #para(value) ", Kv.by("value", 123)).find();

以上代码中,用到了两次 value 值,但后方用 Kv.by 传值时只需传递一次

2019-06-22 16:22

这个新用法的另一个美妙之处在于,你可以在 java 代码中使用 sql 模板,那么也就意味着,你可以在 java 代码的 String 变量中使用 #para 等指令,用一下 templateByString 即可:
Record ret = Db.templateByString("select * from t where id = #para(0)", 123).findFrist();

对于既需要 sql 模板的好处,又希望将 sql 写在 Java 代码中的场景是极佳的体验

2019-06-22 15:51

@sunronsoft 使用最新版本的脚本: jfinal.sh

最新版本可以在这里找到:
https://gitee.com/jfinal/jfinal-undertow/blob/master/jfinal.sh

2019-06-21 17:16

@zeroabc jfinal undertow 不支持 shiro ,这个在文档中有过说明,难道你的项目没有问题?

2019-06-21 16:47

@zeroabc 看一下 UndertowServer 源码,有很多扩展方式,例如可以继承一下 UndertowServer 覆盖父类中相关方法来改变次序

2019-06-21 16:46

jfinal 官方提供的 maven 打包配置,本质也就是目录创建与文件 copy,所以 gradle 也可以按照其目录结构,相关文件来生成相同的结果即可

有几个同学也问过这个问题,谢谢你的分享,点赞 + 收藏

2019-06-21 16:43

登录后的主界面很有创意,相信女主看到后会十分感动

2019-06-21 10:00

@琴海森林 你通过下面的配置,看能不能回到以前的状态:
configConstant(Constants me) {
me.setProxyFactory(new CglibProxyFactory());
}

这个配置是 cglib 对 proxy 模块的一个扩展,与以前的用法完全一样

2019-06-21 09:42

@sandy777 期待能将你的方案分享出来,有几个同学也问过这个问题,建议分享标题可以是《gradle 打包发布 jfinal 项目》

先谢谢了

2019-06-20 23:51

@sdhery 在 jfinal 中使用 freemarek,唯一有关联的地方在 FreemarkerRender.java ,可以看看这部分的代码,可以看出 jfinal 仅仅是轻微整合了一下 freemarker,并未对其进行过干预

建议单步调试进入 FreemarkerRender 内部,看看你的 .setSharedVariable(...) 配置是不是真的生效了

2019-06-20 23:49

jfinal 4.2 主要是增强了业务层 AOP,如果这块代码与业务层 AOP 有关,可以试着单步调试对比来找到原因

我不知道具体原因,因为这块的变化并不涉及异常,老版本的业务层 AOP 用到了 cglib ,或许是 cglib 内部的处理方式与 jfinal 4.2 的有所不同

或许是你自己的代码有所变动引起的

2019-06-20 23:43

@孤傲苍狼 你这个貌似是在使用 servlet 3 自带的文件上传,那么就要添加相应的 Serlet 支持

这个过程与 jfinal 就没有关系了,也就是说不再使用 jfinal 的 getFile() 完成上传

因此,将目光转向如何使用 servlet 3 的 API 来实现文件上传即可。

具体到 jfinal undertow,配置 servlet 的方法在文档中有:
https://www.jfinal.com/doc/1-4

注意在添加 servlet 的时候为其添加 multipartConfig 来支持文件上传

2019-06-20 18:23

@mrbai2018 俱乐部会员该享有的价值

2019-06-20 17:44

@mrbai2018 你在本地能用,扔到线上不能用,这个相对来说比较好解决, 重点关注线上环境与你本地环境有啥区别,用好排除法,例如 tomcat 的版本号之类的

还要注意部署方式,在本地能用,可能是你在 eclipse 中使用 tomcat 能用, 如果你在本地使用与远程一样的部署方式不一定就能用

2019-06-20 17:42

例如,将这个 ModelRecordElResolver.init(servletContext) 放在某个类的 static 块之中,只要是在使用之前加载就可以

spring 有工具类在任何地方获取 ServletContext,所以这个初始化动作放在任何地方都方便