我在访问应用程序映射时得到NullPointerException
,因为我已经实现了ApplicationAware
接口,所以应该在Interceptor中注入。
public String intercept(ActionInvocation ai) throws Exception {
String result = "expire";
app.put("login_msg", "Session Expired");
Map session = ai.getInvocationContext().getSession();
try {
if ((session != null && session.get("login").toString().equalsIgnoreCase("true")) || !app.get("db_name").toString().equals("")) {
log.info("login hai");
app.put("login_msg", "");
result = ai.invoke();
} else {
log.error(" LOGIN EXPIRED ");
}
} catch (NullPointerException npe) {
log.error("Error : " + npe);
}
log.info("Interceptor Result : " + result);
return result;
}
@Override
public void setApplication(Map<String, Object> map) {
app = map;
}
答案 0 :(得分:2)
ApplicationAware是一个用于将全局地图注入动作的界面,而不是拦截器:
希望了解应用程序的操作 Map对象应该实现此接口。这将使他们可以访问Map,在Map中他们可以将应该可用的对象放到应用程序的其他部分。
有多种方法可以实现您想要的,但我很确定它不是您所需要的。为什么要将登录信息放入全局对象?只需写入和阅读会话,这就是您所需要的。