2019-11-25 20:40

@套马的汉字 表达式中不要出现字符 '#',而是应该直接使用变量名,例如:
#set( var = "," + name)

2019-11-25 17:15

@落 可能是细心的问题,例如空格之类的小问题,单步调试,多试几次,肯定可以的

2019-11-25 16:41

@shanmine 不好意思, 忘了这个功能是在 jfinal-undertow 2.0 才有的,这个版本还未正式发布,需要使用源码自己安装到本地:
https://gitee.com/jfinal/jfinal-undertow

2019-11-25 16:23

@shanmine configWeb 方法自动提供给你的,无需你创建,这样用:
UndertowServer.create(JFinalClubConfig.class)
.configWeb(wb -> {
// 这里可以获取到 deploymentInfo
wb.getDeploymentInfo();
})
.start();

以上代码中的 wb.getDeploymentInfo() 即可获取到 deploymentInfo 对象

2019-11-25 16:05

sql 放在数据库控制台可以执行,而在 JDBC 中无法执行的情况是少量存在的,两处的规则略微有些差别,例如 JDBC 中支持问号占位,而控制台不支持

我猜测是因为你的 enable 这个字段的问题, 你看看 enable 字段是不是 varchar, 如果不是的话,不能使用 'false' 常量

'false' 是字符串常量,与 false 是布尔常量,这两者是有本质区别的

2019-11-25 14:24

@yunqi 没错, 必须是符合直觉的规则,谁在前谁先拦截

2019-11-25 14:10

早期版本只有 me.add 这一个方法, 后来由于要添加业务层拦截器,也就是要添加:
me.addGlobalServiceInterceptor(...)

为了与 addGlobalServiceInterceptor 这个相对应,保持对称,就再添加了 :
addGlobalActionInterceptor

而 addGlobalActionInterceptor 与早期的 add 方法是完全一样的功能

2019-11-25 14:09

me.add 与 me.addGlobalActionInterceptor 是完全等价的,用法上完全没区别

2019-11-25 10:45

这个是 java 基础,一定要搞清楚,否则在面临多线程开发时,必然造成混乱

2019-11-25 10:44

@zzutligang 严格来说,业务层无状态是指:你的业务 class 里没有属性,或者只有 final 属性,例如:
public class MyService {
final int value = 123;
}

上面的 MyService 有一个 final 属性,是可以多线程共享的。或者上面的 MyService 没有属性,也可以称之为无状态


如果不严格来说,业务层无状态是指:你的业务 class 里面没有属性,或者只有无状态属性,例如:
public class MyService {
OtherService otherService;
}

上面的 MyService 有一个 OtherService 属性,如果它是无状态的,那么 MyService 也是无状态的

简单总结无状态就是:无属性或者只有无状态属性

状态这个词你简单理解为类的属性就好

2019-11-25 10:38

@jounzhang 在 BaseController 里面不断追加适用于自己项目的方法是最好的,jfinal 迭代开源八年多了,很多东西不方便动,兼容性很重要

好在 jfinal 的设计一开始就是极简,这八年来核心设计从来没有变动过,迭代主要在一些小地方进行

2019-11-25 10:37

这里补充一点,返回给前端的数据不一定非得要 json,还可以直接返回 html 动态片段,例如:
render("_reply_item.html");

客户端接收的该数据后的 js 代码稍稍改一下即可

2019-11-25 10:35

参考 jfinal club 项目中的 com.jfinal.club.share 包现下面的ShareController.saveReply() 方法

该方法内部用到下面代码:
String replyItem = renderToString("_reply_item.html", ret);
ret.set("replyItem", replyItem);
renderJson(ret);

先是对 _reply_item.html 这个 html 动态元素进行了渲染,然后再 renderJson 发回给前端,前端用 js 再显示出来即可

2019-11-24 11:39

当然可以修改,也可以增、减字段,路由在 AdminRoutes.java、FrontRoutes.java 之中,搜索一下就出来了

2019-11-24 11:38

管理图片做成九宫格,做个页面就可以了,由于用的是 bootstrap,所以只需要照着它的文档来做就可以了:
https://v3.bootcss.com/

jfinal 是没有 renderPage 方法的,我猜测你的代码中是在父类中自己添加了 renderPage 方法,参考 jfinal club 中的大量分页用法,这样来做:
setAttr("page", page);
render(...);

然后在页面中直接使用 page 对象就可以了,有方法就调,有属性就拿,参考这里:
https://www.jfinal.com/doc/6-3