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

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

2017-09-13 23:57

#if ( param_i_status != null) 即可,jfinal 模板引擎为了减少代码输入量,#if (0) 的值为 false,而当你确实需要让 0 为 true 时,可以根据实际的逻辑多写点代码

2017-09-13 23:55

@yjjdick1990 搞清楚数据存放在哪里,从哪取过来,这才是本质问题,具体怎么操作都是细枝末节

2017-09-12 11:48

@peterpeter 我觉得你把简单事情复杂化了,本质就是一个 setAttr 然后,模板中 #(value) 取值的事