我定义了一个拦截器,代码如下@Override
public String intercept(ActionInvocation invocation) throws Exception {
List<Category> cityList=systemService.getCategorySortList("city");
HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
OgnlValueStack stack=(OgnlValueStack)request.getAttribute("struts.valueStack");
stack.set("cityList",cityList);
System.out.println(cityList.size());
System.out.println("到这里了");
return invocation.invoke();
}这个拦截是手动往ValueStack中加入值,我重新配置了默认的拦截器栈 <!-- 配置系统默认拦截器栈 -->
<interceptors>
<interceptor name="properties" class="com.zuwoba.presentation.interceptor.PropertiesInterceptor"/>
<interceptor-stack name="group">
<!--引用默认拦截器(注意顺序) -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="properties"/>
</interceptor-stack>
</interceptors>
<!-- 将自定义拦截器栈定义为默认拦截器栈 -->
<default-interceptor-ref name="group"/>我将我配置的拦截器放在defaultStack之后组成了默认的拦截器栈,按理当指向一个action的时候在显示一个页面的时候,值栈中就会有值,jsp页面就可以取到,但是实际情况不是这样的,
如果当action返回succes而显示页面的时候,页面可取到值
但是当action返回input而显示页面的时候,却不能取到值 <interceptor-ref name="properties"/>
<interceptor-ref name="defaultStack"/>如果换一下顺序,却可以取到值,我有点不明白,按理说如果把自己配的拦截器放在最后,那么无论怎么样值栈中应该是幼稚的啊?如果放在defaultStack的前面,还可能因为要经过Struts2自己的拦截器栈,值可能会没,但是我运到的情况却相反,这是怎么回事?
public String intercept(ActionInvocation invocation) throws Exception {
List<Category> cityList=systemService.getCategorySortList("city");
HttpServletRequest request=(HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST);
OgnlValueStack stack=(OgnlValueStack)request.getAttribute("struts.valueStack");
stack.set("cityList",cityList);
System.out.println(cityList.size());
System.out.println("到这里了");
return invocation.invoke();
}这个拦截是手动往ValueStack中加入值,我重新配置了默认的拦截器栈 <!-- 配置系统默认拦截器栈 -->
<interceptors>
<interceptor name="properties" class="com.zuwoba.presentation.interceptor.PropertiesInterceptor"/>
<interceptor-stack name="group">
<!--引用默认拦截器(注意顺序) -->
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="properties"/>
</interceptor-stack>
</interceptors>
<!-- 将自定义拦截器栈定义为默认拦截器栈 -->
<default-interceptor-ref name="group"/>我将我配置的拦截器放在defaultStack之后组成了默认的拦截器栈,按理当指向一个action的时候在显示一个页面的时候,值栈中就会有值,jsp页面就可以取到,但是实际情况不是这样的,
如果当action返回succes而显示页面的时候,页面可取到值
但是当action返回input而显示页面的时候,却不能取到值 <interceptor-ref name="properties"/>
<interceptor-ref name="defaultStack"/>如果换一下顺序,却可以取到值,我有点不明白,按理说如果把自己配的拦截器放在最后,那么无论怎么样值栈中应该是幼稚的啊?如果放在defaultStack的前面,还可能因为要经过Struts2自己的拦截器栈,值可能会没,但是我运到的情况却相反,这是怎么回事?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货