最近想搞一搞struts2拦截器,就搞了个计算执行拦截器的时间的小程序。本来挺简单的小程序,可以老是报空指针异常,调试查看,原来页面表单的数据传到后台就变成null了,就没有实例化表单中的数据。
<!--注册时间拦截器--> <interceptors > <!--自定义拦截器--> <interceptor name="time" class="com.zhiyou.intercept.Timeintercept"/> <!--定义一个拦截器栈--> <interceptor-stack name="mytime"> <interceptor-ref name="time"/> </interceptor-stack> </interceptors> <!--配置默认的拦截器-->
<action name="login" class="com.zhiyou.action.LoginAction"> <result name="success">welcome.jsp</result> <result name="error">index.jsp</result> <!--引用自己定义的拦截器--> <interceptor-ref name="mytime"/></action>这是我配置的struts.xml文件中的拦截器,拦截器栈,及action的配置。
令我很费解,只要去掉拦截器就可以获取表单中的数据,一填上就报错,
后来通过查找资料才知道,原来引用默认的拦截器。
只要在<interceptor-ref name="mytime"/>后面添加上
<interceptor-ref name="defaultStack"/>就ok了。一个这么小小的问题,搞了这么久也是醉了。