2017-09-14 10:22

@yzdoraemon 建议单步调试一下,看看现场

2017-09-14 10:13

@听雨跳舞 有关 html 片段渲染 + ajax 的代码在 ShareController 中的 saveReply() 方法里,还有更多玩法,可以去俱乐部交流

2017-09-14 10:13

@听雨跳舞 收一下系统发送的私信,进入俱乐部专享群

2017-09-14 09:57

分页查询中如果使用 order by 只要是没有报异常,结果一定是正确的,当然这个结果取决于你的 sql 是否正确

paginateByFulSql 本质上只是用于复杂 order by 的情况,例如下面这种情况:
select * from xxx where ... order by ( select yy from ...) as temp

由于分页查询需要用 select count(*) from (原 sql) as temp 去计算总记录条数,而 count(...) 函数不能与 order by 同时存在,所以需要针对 select count(*) 这个查询去掉 order by 子句

问题在于 order by 可以是无限复杂的嵌套 sql,以至于要用正则彻底覆盖所有 order by 所有模式的情况会让程序性能下降一至两个数量级

因此,为了权衡性能与便利性,paginate 方法中的正则仅匹配移除最常用的 order by 模式,而 paginateByFullSql 专门针对无法彻底移除 order by 的情况而生

2017-09-14 09:49

代码走到 #include 一个 html ,表明已经在渲染当前页面,这个时间点与 render 方法就没有关系了,点击一个按钮,刷新数据是发起的另一次新的请求,用 ajax 可以实现

jfinal.com 官方是这么实现的:
1:在第一个 action 中先渲染出整个页面
2:在需要动态的地方,使用 ajax 向某个 action 发起请求,假定该 action 叫 item()
3:做一个 _item.html 页面,仅仅渲染出页面需要更新的那一个小片段
4:在 item() 这个 action 中 render("_item.html") 响应 ajax 请求
5: ajax 请求将获取到的 html 片段,用 insert 插入到页面指定的地方,替换掉原来的老数据也可以

建议加入俱乐部,现成的代码可使用,省下的钱数倍于加入club的投资

2017-09-14 00:23

更新失败的异常信息是什么? 否则无法判断原因

batch 是最快的方式,注意设置好合理的 batchSize,建议是 3000 到 5000

2017-09-14 00:22

@lyleluo 半天没反应,数据是否有部分存进去? 将 batchSize 设置小点,如 3000 试试

2017-09-14 00:20

异常提示是 sql 写错了,据判断很可能是你传参方式引起的,将 url 问号挂参改为 post 请求体传参

2017-09-14 00:19

愿望非常好,这也是多年前我做这个功能时希望的样子,但是不解析就无法取到文本参数,这个是由 http 规范决定的

其实这个问题很好验证,你可以将 MultipartRequest 的代码全部 copy 出来,改造成自己需要的样子,然后通过下面的代码让其生效就好:
inv.getController().setHttpServletRequest(myMultipartRequest)

上面的代码即可将你自己解析出来的 myMultipartRequest 再注入 controller 中以供后面使用,仍然是用你在本贴中的拦截器来做

2017-09-14 00:07

可以在俱乐部群里面 @ 一下我

2017-09-14 00:06

可以将 namespace 指令改造成一个自己的 MyNameSpaceDire,让其支持多层就好,实现起来大致就是判断一下当前 namespace 指令上层是否还有 namespace,如果在的话,就让值相加一下

最后用自己的实际来代替官方实现:
1:arp.getEngine().removeDirective("namespace"); 移除官方实现
2:arp.getEngine().addDirective("namespace", new MyNameSpaceDire()); 添加自己的实现

2017-09-14 00:04

这里有一个比较好的项目,参考一下: https://gitee.com/jfinal/LMS

2017-09-14 00:01

@li_ms 在 public void afterJFinalStart() 中做这个事合适,具体用法见 jfinal 手册

2017-09-13 23:58

@小徐同学 这个是正确,感谢我不在的这几天 @小徐同学 对社区的支持