我现在的想法是一个业务Action在struts2的xml配置中配置了两个两个拦截器,一个拦截器是为了检测session是否有用户,就是检测当前用户是否登陆了,另外一个拦截器主要是检测当前用户是否有权限做这个交易,现在问题来了如果拦截器检测到session中用户为空就是用户没有登录我就跳转到一个显示提示信息的页面
拦截器代码如下
public class CheckLoginStatus extends AbstractInterceptor {
private String resInfo;
private String redirPath;
public String getResInfo() {
return resInfo;
}
public void setResInfo(String resInfo) {
this.resInfo = resInfo;
}
public String getRedirPath() {
return redirPath;
}
public void setRedirPath(String redirPath) {
this.redirPath = redirPath;
}
@Override
public String intercept(ActionInvocation ac) throws Exception {
if(ActionContext.getContext().getSession().get("userInfo")==null){
this.setRedirPath("login.html");
this.setResInfo("请先登录后操作!");
return "input";
}
return ac.invoke();
}
}
我想在前端通过
<s:property value="resInfo"/>
来显示报错信息,这样我的报错信息会比较灵活,可以用程序控制,现在问题是前端显示为空,我在前端页面中使用<s:debug/>来查看valueStack结果在其中没有看到拦截器中的成员变量,请问我该怎么办
------解决思路----------------------
楼主你的数据根本没放入值栈中,你可以ac.getInvocationContext().put("resInfo","请先登录后操作!");这样就能放入当前action的值栈