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

struts2加上拦截器后,表单参数不能实例化为对象了!!
struts2加上拦截器后,表单参数不能实例化为对象了,报空指针错误,去掉栏截器之后就能正常实例化!!

------解决方案--------------------
探讨

赶紧有个人回帖回帖立即把分给你!!随便说就行了!!这个问题已经解决,是struts2 拦截器的配置出错了!!

------解决方案--------------------
LZ看你的拦截器是怎么加的。

如果是在Action配置自定义拦截器,struts2默认拦截器必须手动引用。

例:
<action name="Test" class="com.TestAction">
<interceptor-ref name="testInterceptor" />
<interceptor-ref name="defaultStack" /> <result>/test.jsp</result>
</action>
------解决方案--------------------
<interceptors>
<interceptor name="checkusernameInterceptor" class="com.struts2.interceptor.interceptor"/> //这个是定义的一个拦截器
<interceptor-stack name="checkInterceptor">
<interceptor-ref name="defaultStack"/> //这个是默认的拦截器,如果你没有这个默认的拦截器的话,里面很多功能都不能用,例如上传下载。
<interceptor-ref name="checkusernameInterceptor"/>
</interceptor-stack>
</interceptors>

/*********************************/
然后你建一个类interceptor,implements Interceptor。


public String intercept(ActionInvocation ai) throws Exception {
System.out.println("进入拦截器!!!");
String username=ServletActionContext.getRequest().getParameter("username"); //例如你先要获得reuqest里面的对象,这样才可以进行下面的判断!!!
if(username!=null && !username.equals("")){
ai.invoke(); //判断正确,才跳转,执行action!!
}
return "message";
}