2017-10-19 17:09

jfinal 默认的 Validator 是为 form 表单这类参数准备的

2017-10-19 17:09

@JennyJingXiao Validator 本质就是一个拦截器,你可以参考 Validator 中的代码改造为一个自己的 PostBodyValidator 出来,然后定制自己的 validateXxx 方法

2017-10-19 17:06

这种情况下,参数是通过什么方式获取的? 是不是通过
HttpKit.readData(getRequest()) 获取到的?

2017-10-19 17:00

@lyq027 jfinal 的数据库功能,本质就是将 sql 与其参数直接转手给 jdbc,所以,只要是 jdbc 可以做到的, jfinal 都支持

2017-10-19 16:59

不会的, 所有拦截器与action执行完成以后,render 的动作才被真正执行,这个是确信无疑的,调试一下

当你调用 render 方法时,jfinal 内部仅仅是 new 出来一个 XxxRender 对象,并不会真正调用 XxxRender 中的 render() 方法,只有当拦截器与 controller 的事情完事以后, XxxRender.render() 才真正被执行

2017-10-19 16:39

@lyq027 用一个 as 就可以了,例如: select sum(money) as money

不用 as 的话,也可以,只是不方便: model/record.get("sum(money)");

2017-10-19 16:15

把 sql 写好就可以了,然后 model.find(sql, ....) 或者 Db.find(sql, ...) 都可以

2017-10-19 12:35

@小毅好 参考下这个贴子:http://www.jfinal.com/feedback/2267

2017-10-19 10:50

用下面的方法先拿到 controller 对象:
Controller controller = inv.getController();

然后获取数据就与在 controller 中一样了

2017-10-19 10:33

看一下我在这个贴子下面的回复: http://www.jfinal.com/share/230

2017-10-18 20:00

getPara("staffStore[0].username") 即可

2017-10-18 20:00

当然,最后要配置一下:
me.setRenderFactory(new MyRenderFactory());

2017-10-18 19:59

在日志里面针对这个异常单独配置,忽略掉这个异常就可以了,假定你的配置前缀为 log4j,大致如下:
log4j.com.jfinal.render.FileRender = OFF

不太记得配置细节了,上面的配置可能是错误的,如果不对,再试试下面这个:
log4j.org.apache.catalina.connector.ClientAbortException = OFF

还有一个更好的办法就是通过继承 RenderFactory 并覆盖掉 getFileRender() 方法,接管这个以后用自己的 MyFileRender extends FileRender 来代替原来的实现

在 MyFileRender 中的大致代码如下:
try {
super.render();
} catch(Exception e) {
if (e.getMessage().contains("ClientAbortException") ) {
// 忽略;
} else {
throw new RuntimeException(e);
}
}

2017-10-18 19:46

做个 MyRenderFactory extends RenderFactory, 并覆盖掉其中的 getJsonRender() 方法,在里面接管 JsonRender 实现

在接管的 JsonRender 中向控制台输出即可,大致这样:
public class MyJsonRender extends JsonRender {
public MyJsonRender(...) {
super(...);
}

public void render() {
super.render();
System.out.println(this.jsonText);
}
}

上面的 this.jsonText 字段名不一定对,以 JsonRender 中的代码为准。最后要配置一下:
me.setRenderFactory(new MyRenderFactory());