2018-07-16 12:15

这个问题如果反过来说是可以的,就是 #for 循环出来的数据如何被 js 追加到 html 中去,把后端模板与 js 完全分开来处理就可以了

2018-07-16 09:55

里面有一个独立的方法处理 news 类型,稍微找一下

2018-07-15 17:26

@lwcompany 那么,你的 context path 设置的是多少? 值为 "" 也是可以的,这个值是随着你的启动参数去变化的

2018-07-15 16:46

@zhaofan 微信官方最初发布的 XXE 解决方案不是最终方案,建议升级到 jfinal weixin 2.1 ,这版使用了微信官方后来公布的方案

2018-07-15 16:45

周日上午试着改进了一下,发现整个结构都要改变,还要添加 pajx 才可以

工作量太大,暂时不动了

2018-07-15 11:35

此外, me.setDevMode(true);
me.addSharedObject("ctxPath", JFinal.me().getContextPath());

上面这两行代码放在 configEngine 的最前面,因为
me.setDevMode(...) 会立即对后续的代码产生影响
me.addSharedFunction("/common/_layout.html");

当然,这个对于本问题没有关联

2018-07-15 11:33

@lwcompany 这个就再也猜不到原因了,单步调试一下,直接实地定位错误

2018-07-15 09:47

@lwcompany 如果是 “非maven” ,注意配置一下 Default output folder,这里有配置的方法:
http://www.jfinal.com/doc

maven 项目不需要配置 default output folder

2018-07-15 09:45

@lwcompany 大概率是自动编译没有打开,改过的代码未生效

2018-07-15 09:18

在使用 ContextPathHandler 的时候,默认名是:CONTEXT_PATH

所以得这样用:#(CONTEXT_PATH)

如果希望取别的名字,人 ContextPathHandler 传入一个构造参数即可:
me.add(new ContextPathHandler("ctxPath"));

如果使用的是 jfinal 的 enjoy 模板引擎,有更好的配置方法来取代,在 configEngine(Engine me) 中配置:
me.addSharedObject("ctxPath", JFinal.me().getContextPath());

2018-07-14 22:06

@童年 这个问题其实很简单,不要想得那么复杂
1:异常出现在 UserController 第 21 行的 user.setAdress(...)
2:第 21 行的 user 曾经调用过 dao() 方法
3:往前追,user 来自于 users.get(i),再往前 users 来自于 UserService.getUsers()

这个问题就很明显了,你在 UserService.getUsers() 方法中调用过 user.dao() 方法,不要调用这些 user 的 dao() 方法即可

2018-07-14 16:27

关键是上面定义的 #define genIn(idList) 在任何这种生成 in(?, ?, ?...) 的场景都可以使用

2018-07-14 16:26

@jiren 用 sql 管理就很方便了,例如:

先定义一个函数 genIn , 专用于生成 in 内部的问号与参数
#define genIn(idList)
in(
#for (x : idList)
#(for.first ? "", ",") #para(x)
#end
)
#end

然后在任何地方都可以像这样来使用 genIn() 函数:
#sql("find")
update bx_edums_schedule set is_deleted = '1' where c_id = #para(c_id) and id #@genIn(idList)
#end

java 代码变成这样:
Kv cond = Kv.by("c_id", p_campusId).set("idList", ids);
SqlPara sp = Db.getSqlPara("find", cond);
Db.update(sp);

或者: Db.update(sp.getSql(), sp.getPara());

2018-07-14 15:52

@jiren 有多少个问号就要有多少个参数,此外,你后面的 p_campusld 与 StrKit.join(...) 生成的所有参数应该处于同一个 Object[] 数组里面,不能分开写

你的 StrKit.join(ids,",") 这个代码最终生成的是一个字符串,里面有很多个参数直接放在 in 里面去,否则你的 in 里面就可拼接出同样数量的问号来对应

你这个情况比较复杂,我直接说一下正确的使用结果,假定一共有三个参数:
Object[] paras = new Object[3];
paras[0] = p_campusId;
paras[1] = ids[0];
paras[2] = ids[1];

Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?, ?)", paras);

注意看上面,问号是三个,参数 paras 数组正好是三个元素。而且特别重要是的 p_campusId 与 ids 这两个参数是要合并到同一个数组中去的,除非你的 ids 不是数组,可以这样:
Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?, ?)", p_campusId, id1, id2);

如果是数组,可以这样:
Db.update("update bx_edums_schedule set is_deleted = '1' where c_id = ? and id in (?, ?)", p_campusId, ids[0], ids[1]);

这个问题你得明白Java 中的 Object... paras 可变参数规则

2018-07-14 15:45

应该是你的浏览器请求被劫持了