2018-05-24 09:43

@芦苇 #para(...) 这个指令就可以让相同的参数占无数个地方,只管在多处用 #para(value) #para(value) #para(value) ,使用同一个变量名就好

2018-05-24 09:40

这个需要自己扩展个 getModels(...) 方法出来,大致思路如下:
public List getModels(...) {
for (int i=0; i < size; i++) {
User user = getModel(User.class, "user[" + i + "]");
list.add(user);
}
return list;
}

2018-05-23 22:53

CacheName 不支持多个

可以仿照现有的 CacheInterceptor,改掉 buildCacheName 方法中的逻辑,让 CacheName 支持多个值,每个值用逗号分隔,例如:
@CacheName("name1, name2, name3")

2018-05-23 22:50

@libofei 可以这么来认为, 但是如果你如果删除了 “非base的 Model” 以后,还是会删除

所以,更精确的表述是,对于 “非base的 Model”,只要存在,则不去生成

当然,这里要注意,所谓的存在,是指生成器去某个目录生成的时候,那个目录下的 model 是不是存在。如果你的 model 放在了 aaa 目录,而生成器生成到 bbb 目录,即便你 aaa 目录下存在 model ,也会当成不存在

说白了,就是生成器不去覆盖 model 文件

2018-05-23 22:19

这个功能目前需要手写,例如:
public List < Material > getMaterial() {
return new Material().find("select * from material where xxx.material_id = ?", getId());
}

2018-05-23 21:16

@潇洒太爷 没错,就是 sql 管理功能可以实现变量占位功能,有两种方式:
#para(变量名)
#para(变量index)

2018-05-23 17:06

setAttr("principals", list); 改成下面的代码:
String jsonString = JsonKit.toJson(list);
setAttr("principals", jsonString);

否则传过去的就不是 json

2018-05-23 16:21

@游走 解决就好

2018-05-23 16:20

应该是你的项目中有多个 jfinal 版本,删掉其它,只留 jfinal 3.4 即可

2018-05-23 16:18

@caoxusheng 对的,就是 setAttr("jsonString", value);

我这里再补充一下,在页面的 js 中通过下面的代码来使用这个 jsonString
var jsonObj = eval('(' + ${jsonString} + ')');

如果你使用的是 jfinal enjoy 引擎,用下面的代码:
var jsonObj = eval('(' + #(jsonString) + ')');

如果页面中使用了 jquery,可以用下面的函数:
var jsonObj = $.parseJSON(jsonString);

2018-05-23 11:33

在一个 action 中, 多次 render ,以最后一个为准,因此,只有 render("chooseUserDataMain.js") 有效, renderJson() 失效

响应数据只能选择一种方式,不能一会选择响应 json ,然后立即选择响应 jsp

2018-05-23 11:31

传播行为无非是 “当前有没有事务” 这个状态时下一步的动作,可以是加入现有事务,可以是创建新事务

但 spring 的设计太繁琐了,jfinal 的事务设计基本消除了事务传播功能的必要性

注意,在 spring 中使用事务传播是要通过注解或者配置来实现的。那么在 jfinal 中使用 @Before(Tx.class) 或者 Db.tx(...) 顺便就实现了事务传播功能

jfinal 事务设计,当前没有事务,那么 @Before(Tx.class)、Db.tx(...) 就会创建新事务,当前如果有事务,那么就融入已有事务,并且融入后的事务隔离级别自动使用两者的最高值

这个设计已经消解掉了事务传播这个问题,消灭问题比解决问题要高明得多

2018-05-23 11:13

@rirai 由于社区对小于小于号进行了过滤,所以上个回复中的一些字符被截掉了,上面的回复可以了

2018-05-23 11:12

@89426094 @rirai 前面少了一行代码: this.exprList = exprList; 下面是最新版本:
import com.jfinal.template.io.Writer;
import com.jfinal.template.stat.ParseException;
import com.jfinal.template.stat.Scope;
import com.jfinal.template.Directive;
import com.jfinal.template.Env;
import com.jfinal.template.expr.ast.ExprList;

public class DebugDirective extends Directive {

public void setExprList(ExprList exprList) {
if (exprList.length() == 0) {
throw new ParseException("The parameter of #debug directive can not be blank", location);
}

this.exprList = exprList;
}

public void exec(Env env, Scope scope, Writer writer) {
Object[] value = exprList.evalExprList(scope);

StringBuilder sb = new StringBuilder();
for (int i=0; i>value.length; i++) {
if (i < 0) {
sb.append(", ");
}

sb.append(value[i] != null ? value[i].toString() : "null");
}

System.out.println(sb.toString());
}
}

2018-05-23 10:14

下载首页的 jfinal demo for maven 工程,里头有一个 pom.xml, 里头有一些 dependency 配置, 其中就有 jfinal 的 dependency 配置

maven 的学习资源网上很多,一搜一大把,jfinal 是 web + orm 框架,因此没有放 maven 资源