今天编程遇到一个奇怪的问题。
问题描述:
系统结构 struts2+spring+hibernate
首先,页面向后台发出异步请求 响应的action在struts.xml中配置。该action name=“upload”。因为要异步返回json数据,所以,该action所在的package继承了json-default。
<action name="upload" class="uploadAction" >
<result name="success" type="json">
<param name="root">uploadResultVo</param>
<param name="noCache">true</param>
<param name="excludeNullProperties">true</param>
</result>
<result name="error">error.jsp</result>
</action>
然后,页面发出请求后,返回404,。单步跟踪发现,可以正确进入action,并有正确的返回SUCCESS,但是就是不能得到json结果;
后来尝试把result换成普通页面
<result name="success">/WEB-INF/index.jsp</result>
还是返回404.
这明显是struts不能正确找到result对应的视图,所以必定是struts配置文件出错。
这样一想,原因就很明显了,因为我继承了json-default包,就可能是我的actionname和包中的某个action冲突了。因此我尝试改变name的值,果然,能正确跳转,也能返回json数据了。
此外,也可以给package加namespace,这样也可以避免命名冲突。