今天編程遇到一個奇怪的問題。
問題描述:
系統結構 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,這樣也可以避免命名衝突。