action加入自定义拦截器后无法获取值(参数的值),一波三折呀

2015-11-30 23:40:21,175 [ERROR] [com.opensymphony.xwork2.interceptor.ParametersInterceptor] - Developer Notification (set struts.devMode to false to disable this message):

出现上面的问题。首先应该确认是你打开了开发者模式,虽然你关闭开发者后不会出现这条信息,但是这条错误信息却很重要。

他告诉我们action中的参数并没有被正确的获取到,或者拦截器似乎出了点什么问题

我们再看看提示错误的类

com.opensymphony.xwork2.interceptor.ParametersIntercepto

不难发现,原来是拦截器的问题。

自此,问题解决,因为我自定了一个拦截器,所以需要在自定义拦截器下面增加一个默认的拦截器

否则,action不能正确的获取到信息

默认拦截器 <interceptor-ref name="defaultStack" />


这个问题是昨天的,本意味问题解决了,也就匆匆睡觉了,尽早起来才发现加入默认拦截器后,action仍然是没有获取到前台的值的


这时我发现我的自定义拦截器居然返回的页面是非post页面,也就是说我的自定义拦截器是拦截非post请求的

如果请求是非post就返回到一个页面,是post请求就执行下一个拦截器,然后我写了两个输出语句加以确认,代码如下:


public String intercept(ActionInvocation arg0) throws Exception {
		String method = ServletActionContext.getRequest().getMethod();
		if(method.equalsIgnoreCase("POST")){
			System.out.println("起左右了吗");
			return arg0.invoke();
		}
		System.out.println("起左右了吗暗暗啊");
		return "login404";
	}
发现打印的结果居然是:“起左右了吗暗暗啊”。


自此问题明朗,原来我的请求是非post请求,我自己的拦截器把我的请求给拦截了

再继续发掘,原来是ajax没有添加type:post属性


type:"post",
我给我自己下了个套。哈哈



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img