【发布时间】:2011-03-22 00:03:53
【问题描述】:
我有以下(缩短的)struts2 动作:
public class MyAction extends BaseAction implements CookiesAware {
public String execute() {
if (cookiesMap.containsKey("BLAH"))
blah=Integer.parseInt(cookiesMap.get("BLAH"));
return "success";
}
// For handling cookies
Map<String, String> cookiesMap;
@Override
public void setCookiesMap(Map<String, String> cookiesMap) {
this.cookiesMap = cookiesMap;
}
}
当我执行“cookiesMap.containsKey”时,我得到一个空指针异常——在我看来,setCookiesMap 没有被调用。我已经实现了 CookiesAware 接口,所以我会认为它应该被调用 - 我在这里错过了什么吗?
谢谢
【问题讨论】:
-
或者我在这里违背了原则 - 我真的应该使用会话吗?会话是 struts2 中更“有福”的做事方式吗?
-
我要去看看这个:omkarp.blogspot.com/2007/08/…
-
在我看来,使用 'map' 方法对于读取 cookie 不是很好 - 因为您必须在拦截器引用中指定您想要(或全部)的 cookie,但它仍然无论如何都会尝试将它们注入到 setter 中,如果找不到任何 setter 则会崩溃!
-
最后我决定struts2对cookies的支持太小了,我只是打算使用ServletRequest/Response来分别获取/设置它们。我现在正在使用它,效果很好。