首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
enjoy模板的输出指令#()可以输出cookie里面的内容吗?
芦苇
2017-11-10 16:41
我试了下好像不支持输出cookie中已存在的内容,是不是我是用方式不对还是配置不对?
项目:
JFinal
2
评论区
JFinal
2017-11-10 16:45
页面中读取 cookie 建议直接用 javascript 的 api
如果要用 enjoy 读取 cookie 的内容,需要自己写点代码扩展, enjoy 被设计成可以在非 web 环境下使用,所以不能与 servlet 耦合,就没有支持直接读取 cookie
参考 me.add(new SessionInViewInterceptor()) 的做法,添加这个拦截器以后可以在页面用 #(session.value) 来读取 session 中的内容。 cookie 的处理也可以类似
回复
JFinal
2017-11-10 16:47
可以写个拦截器,将所有 cookie 保存在一个 map中,然后在 enjoy 中读,例如:
public class CookieInViewInterceptor implements Interceptor {
public void intercept(Invocation inv) {
这里用一个 map 来封装所有 cookie,假定为key 为 cookie
inv.getController().setAttr("cookie", cookieMap);
inv.invoke();
}
}
回复
芦苇
2017-11-10 17:02
好的好的,十分感谢
回复
芦苇
2017-11-10 17:14
已经成功搞定,很方便,哈哈
回复
JFinal
2017-11-10 17:20
@芦苇
具体代码分享出来啊,在这里贴下代码,说不定很多人需要:jfinal.com/share
回复
芦苇
2017-11-14 15:52
@JFinal
好的,我整理下
回复
芦苇
2017-11-14 15:55
新建一个Interceptor:
public class CookieInViewInterceptor implements Interceptor{
@Override
public void intercept(Invocation inv) {
Controller c = inv.getController();
//从cookie中取出属性值,放到当前Controller的request
c.setAttr("styleCode", c.getCookie("styleCode", "default"));
inv.invoke();
}
}
然后在JfinalConfig中加入全局拦截器:
public void configInterceptor(Interceptors me) {
// TODO Auto-generated method stub
me.add(new CookieInViewInterceptor());
}
回复
芦苇
2017-11-14 15:57
我是做的换肤功能,当前使用的风格代码(css目录名)存在cookie中,每次页面渲染时使用#()去生成css路径用的
回复
发送
我要反馈
热门反馈
扫码入社
如果要用 enjoy 读取 cookie 的内容,需要自己写点代码扩展, enjoy 被设计成可以在非 web 环境下使用,所以不能与 servlet 耦合,就没有支持直接读取 cookie
参考 me.add(new SessionInViewInterceptor()) 的做法,添加这个拦截器以后可以在页面用 #(session.value) 来读取 session 中的内容。 cookie 的处理也可以类似