2017-07-20 11:41
@macaque 拦截器里面做是不会生效的,因为拦截器只拦截 action,不拦截 render
最好的做法是类似于如下:
public class MyTemplateRender extends TemplateRender {
static ThreadLocal threadLocal = new ThreadLocal();
public MyTemplateRender(String view) {
super(view);
}
public void render() {
threadLocal.set(...);
try {
super.render();
} finally {
threadLocal.remove();
}
}
然后通过扩展 RenderFactory 来切换自己的 MyTemplateRender:
public class MyRenderFactory extends RenderFactory {
public Render getRender(String view) {
render new MyTemplateRender(view);
}
}
最后配置一下:
me.setRenderFactory(new MyRenderFactory());
2017-07-20 00:38
@rancedxk 这里的细节我也不记得了,在本地搭建一个测试环境,现场调试一下,搭建方法在此:
http://git.oschina.net/jfinal/jfinal-weixin/wikis/JFinal-weixin-demo%E5%92%8C%E8%B0%83%E8%AF%95
2017-07-19 14:32
@yzdoraemon 把数据库设计好是关键,然后将流程审批抽象为对数据的操作,每一个流程就是在数据库做一个流程状态的记录
以数据为基础去做设计,而不要陷入到复杂的流程之中
2017-07-19 11:52
cookie 禁用后,通常用 url 重写就好,将 cookie 值放在 url 中传递就好,在 jfinal 这端支持这个需要添加一个 Handler,参考这里:
public class SessionIdHandler extends Handler {
public void handle(String target, HttpServletRequest request,
HttpServletResponse response, boolean[] isHandled) {
// L.cm update by 2014-08-06 更精准的判断
boolean isFromURL = request.isRequestedSessionIdFromURL();
if (isFromURL) {
target = target.substring(0, target.indexOf(';'));
}
next.handle(target, request, response, isHandled);
}
}
最后配置一下就好:
me.add(new SessionIdHandler());