想在Service层也就是非controler层获取request,或者session对象
原因:想把jpress改成多站点的, 根据不同域名对应不同的模板的站点。但是才准备改就发现了个问题,有很地方引入了currentTemplate() 算是service中的一个方法,这里面想加个判断,根据request.getServerName(也就是域名)来进行切换模板。但是这里怎么获取request对象呢,如果单纯的参数里面直接传request对象的话改动比较大,有没有一劳永逸的好办法呢
如果一定要这么用,可以引入一个全局拦截器,大致如下:
public Context implements Interceptor {
static final ThreadLocal TL = new ThreadLocal();
public void intercept(Invocation inv) {
TL.set(inv.getController().getSession());
try {
inv.invoke();
} finally {
TL.remove();
}
}
public static Session getSession() {
return TL.get();
}
}
然后添加这个拦截器为全局拦截器,用的时候这样:
Context.getSession();