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());
}
}
2018-05-22 22:46
@libofei 只覆盖 Base model , MappingKit , 绝对不会覆盖你的 Model ,因为 jfinal 默认认为你会在 model 中添加自己额外的代码例如 jfinal club 中的 Account Session 类
2018-05-22 22:40
在 jfinal 下可以像呼吸空气一样自然的拥有 formula 的功能,而不用像 hibernate 那样先要弄个属性在 bean 中, 还要用 XML 配置这个属性指向的哪个 select field
jfinal 中是这样用的:
Articel article = findFirst("select a.*, u.nickName from article a inner join user u on a.userId = u.id where a.id = ? limit 1", 123);
上面的代码就可以将 user 表中的 nickName 给弄到 article 中去,然后这样来读:
String nickName = article.getStr("nickName");
jfinal 的 model 也是可以自动生成 getter setter 方法的,具体看一下首页的 jfinal demo 中的用法