日期:2014-05-17  浏览次数:20677 次

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" />