我在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标簽):
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuQWZzUTOhljM0cTO2ATOwATNxMWM1EWYxEjY5ADNlFTNfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
可見,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标簽