2018-05-24 09:43
@芦苇 #para(...) 这个指令就可以让相同的参数占无数个地方,只管在多处用 #para(value) #para(value) #para(value) ,使用同一个变量名就好
2018-05-23 22:50
@libofei 可以这么来认为, 但是如果你如果删除了 “非base的 Model” 以后,还是会删除
所以,更精确的表述是,对于 “非base的 Model”,只要存在,则不去生成
当然,这里要注意,所谓的存在,是指生成器去某个目录生成的时候,那个目录下的 model 是不是存在。如果你的 model 放在了 aaa 目录,而生成器生成到 bbb 目录,即便你 aaa 目录下存在 model ,也会当成不存在
说白了,就是生成器不去覆盖 model 文件
2018-05-23 21:16
@潇洒太爷 没错,就是 sql 管理功能可以实现变量占位功能,有两种方式:
#para(变量名)
#para(变量index)
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:31
传播行为无非是 “当前有没有事务” 这个状态时下一步的动作,可以是加入现有事务,可以是创建新事务
但 spring 的设计太繁琐了,jfinal 的事务设计基本消除了事务传播功能的必要性
注意,在 spring 中使用事务传播是要通过注解或者配置来实现的。那么在 jfinal 中使用 @Before(Tx.class) 或者 Db.tx(...) 顺便就实现了事务传播功能
jfinal 事务设计,当前没有事务,那么 @Before(Tx.class)、Db.tx(...) 就会创建新事务,当前如果有事务,那么就融入已有事务,并且融入后的事务隔离级别自动使用两者的最高值
这个设计已经消解掉了事务传播这个问题,消灭问题比解决问题要高明得多
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());
}
}