前台技術採用extjs:
strut2提供了支援json的外掛程式
必須繼承json-default、json-default繼承自struts-default.
datas
success,totalcount
result
1,result中type設定成json之後,容器會把action的屬性自動封裝到乙個json物件中(json***來做),然後呼叫ajax的callback方法. 返回json資料
2,includeproperties 引數:輸出結果中需要包含的屬性值,這裡正規表示式和屬性名匹配,可以用「,」分割填充多個正規表示式。
如module.*,user\.username? 表示是module的所有屬性及使用者的使用者名稱
3,excludeproperties 引數:輸出結果需要排除的屬性值,也支援正規表示式匹配屬性名,可以用「,」分割填充多個正規表示式,類同includeproperties
4,為什麼要用includeproperties或excludeproperties 引數:
主要是為了過濾掉介面,pojo的set、list、其它物件等不需要的資料防止迴圈取其它關聯物件或找不到介面。
如果不配置,預設是處理 action中的所有屬性,如果action中有介面注入,json***可能找不到介面而返回不了結果,
還有如果action中有乙個物件,這個物件與好多物件都有關聯,json***會將相關聯的所有物件的屬性全部轉換成json格式,
如果其它物件有list、set,其返回結果相當龐大,有可能是死迴圈而無法返回 。
如果不用或其他方式進行json資料過濾,通過debug你會發現前台返回的json字串,
是把 action中的所有屬性全部轉化成json字串返回給客戶端
(包括service介面、pojo所有屬性及有關聯的pojo。有時候根本返回不了結果,也不報錯,後台執行了,
但前台執行不到callback function,這主要是因為找不到介面或者關聯的pojo太多,造成死迴圈),
一般情況下用的最多的就是root、 includeproperties 和excludenullproperties引數。
當然還有其他的方法,如給pojo的屬性加json註解。
5,result標籤中的name屬性,即表示是struts2中的action類中返回的名稱
如public string findallbyid() throws exception
上面**return "findtree"就會找到findtree的結果集,並將其封裝起來,返回json給客戶端
因此 action 可以配置多個result
struts2和前端通過json互動時資料解析問題
今天在前端通過angular的 http向後台傳值的時候,發現後台無法獲取到值,仔細檢查後發現瀏覽器傳送的 以應該在 http中設定 將提交資料轉換成form表單提交的預設格式,而不是json的格式 如果使用servlet的話就可以解析,但是struts不支援 提交的json 資料也應該轉成key ...
struts2返回json資料
struts2 json plugin 2.1.8.1.jar json lib 2.1.jar commons collections 3.2.jar commons beanutils 1.7.0.jar commons lang 2.3.jar commons logging 1.0.4.ja...
struts2 註解方式返回json
用了struts2 0配置後,如何返回json?首先action上,重新定義預設的 parentpackage,改為 parentpackage abstract struts abstract struts是自己在struts.xml裡定義的乙個package 然後在action上面定義resul...