2017-10-26 16:14

这个是纯 jdbc 问题,in(...) 中的参数有多少问号占位,就需要多少个参数值相对应,而不能是一个

要像是下面的形式:
sql = select * from xxx where id in( ?, ?, ?);
paras = [1, 2, 3];
上面的代码,sql 中是三个问号占位,所以参数也需要三个

解决方案就极其简单了,在模板中通过 for 循环来做:
select * from xxx where id in(
#for(x : ids)
#if(!for.first) , #end #para(x)
#end
)

2017-10-26 12:20

@HalcyonDays 例如,你可以写一个程序,在文章发布以后,扫描内容,看图片是不是真的被引用了,如果没有被引用,则删除掉 oss 上的数据

2017-10-26 12:19

@HalcyonDays 这是一个纯业务问题了,要仔细权衡

2017-10-26 11:51

1:先将图片上传到 oss,然后得到 oss 上的路径,将这个路径给到 content 中
2:不要用 session 来存这类数据,多图片可以用结构化的数据来传递,例如用 json

2017-10-26 10:35

用下 Model.put(Model) 方法即可:
b.put(a);

2017-10-25 18:02

ContextPathHandler 中的操作与 setAttr 没有本质区别,都是调用 request.setAttrubite(...) 而已

再用一个更好的解决方案:
public void configEngine(Engine me) {
me.addSharedObject("path", JFinal.me().getContextPath());
}

2017-10-25 17:58

@jsm 试一下在controller 中用一下 setAttr("myPath", "abc"),然后页面用 #(myPath),看有没有显示出来

2017-10-25 17:26

得先确定 view type 是不是 jfinal 的:
me.setViewType(ViewType.JFINAL_TEMPLATE)

控制器中使用 render(String) 或者 renderTemplate(String) 这两个方法才可以

2017-10-25 16:40

@圣威 模板中的 #(...) #for #if 这些是指令或者表达式,只有在经手了 jfinal template engine 渲染后才会被动态替换成相应的值

建议仔细看下 jfinal 手册,都是基础

2017-10-25 16:38

执行:
List<Record> list = Db.find(sql, ...);

取出:
list.get(i).get("a");
list.get(i).get("b");

2017-10-25 16:37

@songhuaming2000 如果设置为 false,那么 engine 不会检查你的模板是否被改过了,这样做的好处是生产环境性能更好

2017-10-25 16:36

jfinal 专注于 MVC + ORM,并未提供服务治理的功能

服务治理是另一个领域的事情了

2017-10-25 12:26

@netwild jfinal 中的 IRenderFactory 接口具有非常明确的目的,就是为了实现 Render 实现类的接管,对 RenderFactory 进行抽象便可实现

2017-10-25 11:22

#(BASE_PATH) 是用的 jfinal template engine,确定一下配置:
me.setViewType(ViewType.JFINAL_TEMPLATE);

再确定控制器中用的是: render(String);