天天看點

struts2 與json整合無法 識别 type="json"問題

我在struts.xml中有如下action定義:

在上面的定義中,action的result的type為json,json plugin就可将action中定義為groupList的field自動轉換為json格式資料,并傳回給前端UI。

但在deploy後,啟動tomcat時卻報了There is no result type defined for type 'json' mapped with name 'success'. Did you mean 'json'?的錯誤,因為struts2找不到json這個result type的定義。解決方法有下面兩種:

1.将目前package的extends屬性改為"json-default",即讓目前package從josn-default繼承而不是struts-default繼承;

2.但如果目前package确實無法繼承"json-default"的話,還可以在目前package中定義result-type,将json給加進去,如下:

json這個result type是在json-default  (struts2-json-plugin-2.1.8.1.jar\struts-plugin.xml)裡面定義的,内容如下(省去了xml和doctype标簽):

struts2 與json整合無法 識别 type="json"問題
struts2 與json整合無法 識别 type="json"問題

可見,name為"json"的result type是在json-default中定義的,是以,從json-default繼承就可以使用json這個result。另外json-default還定義了一個name為"json"的interceptor。

另外,依json-default的定義來看,方法2中還應該再加一個json的interceptor定義才比較合适。

--------------------------------------------------------------------------

struts.xml中的<package name="default" namespace="/" extends="struts-default">   改為 <package name="default" namespace="/" extends="json-default">

或是增加一個package标簽