struts2 url 传值收不到,由过滤器引起,但我不知道为什么
这是url:
newsSaveOrUpdate.action?op=save&id=9
action 里面有op和id的get.set方法
在页面上得到op 和id的值都是空
通过调试发现只调用了get方法,set方法没被调用
找了好久,发现是过滤器引起的,删了过滤器配置就可以
- XML code
<interceptors> <!-- 定义结果转发拦截器 --> <interceptor name="opResult" class="util.web.OpResultInterceptor"> </interceptor> <!-- 定义默认拦截器 --> </interceptors> <default-interceptor-ref name="opResult" />
过滤器的内容
- Java code
@Override public String intercept(final ActionInvocation arg0) throws Exception { final String methodName = arg0.getProxy().getMethod(); final Class actionClass = arg0.getAction().getClass(); System.out.println(methodName); final Method method = actionClass.getMethod(methodName); [del]if (method.getAnnotation(OpResultToResultPage.class) != null) { // System.out.println("in"); final OpResultBean opResultBean = new OpResultBean(); final HttpServletRequest request = (HttpServletRequest) arg0 .getInvocationContext().get(StrutsStatics.HTTP_REQUEST); final String Page1 = request.getHeader("Referer"); opResultBean.setReferer(Page1); LocaleThreadTool.set("opResult", opResultBean); final String actionResultString = arg0.invoke(); if (ObjectUtils.isEmpty(opResultBean.getResult())) { opResultBean.setResult(actionResultString); } return "result"; }[/del] return arg0.invoke(); }tell me why!!!不明白,怎么解决
[解决办法]
传值收不到。因为你的拦截器配置问题。应该引用struts2默认拦截器
<interceptors>
<!-- 定义结果转发拦截器 -->
<interceptor name="opResult" class="util.web.OpResultInterceptor">
</interceptor>
<!-- 定义默认拦截器 -->
<interceptor-stack name="myStack">
<interceptor-ref name="opResult" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myStack" />