1.
注:struts2的json外掛程式有兩個版本0.32和0.34,我用的struts2的版本是2.0.11,在加入0.34版本json外掛程式時啟動發生異常,提示找不到相關方法,後來就換成了低版本的0.32一切ok,仔細檢視文件後發現struts2的2.0.*版本的對應外掛程式的0.32版本,struts2.1.*版本對應0.34版本 2.
將struts.xml裡面的
<
package
name
="default"
extends
="struts-default">
改為 <
package
name
="default"
extends
="json-default">
4.action中的配置
<
action
name
="testaction"
class
="com.json.action.testaction"
method
="testmethod">
<
interceptor-ref
name
="json"
/>
<
result
type
="json"
/>
action
>
注:根據需要選擇interceptor和result配置
5. 你會發現前台返回的json字串,是把action中的所有屬性全部轉化為json字串返回給瀏覽器了,但是我有時候需要根據實際情況返回部分結果,如何對json的結果進行定製輸出呢?result提供了一些引數替你解決這個問題
5.1. root引數:從返回結果中根據ognl表示式取出你需要輸出的結果 如:
action類
public
class
baseaction
extends
actionsupport
implements
public class baseaction extends actionsupport implements
bean類
public
class
person
public class person
我們只要輸出person物件的name屬性值,配置如下
<
result
type
="json">
<
param
name
="root">
person.name
param
>
result
>
person.name
5.2. excludenullproperties 引數:表示是否去掉空值,預設值是false,如果設定為true會自動將為空的值過濾,只輸出不為空的值。
<
result
type
="json">
<
param
name
="excludenullproperties">
true
param
>
result
>
true
5.3. ignorehierarchy 引數:表示是否忽略等級,也就是繼承關係,比如:testaction繼承於baseaction,那麼testaction中返回的json字串預設是不會包含父類baseaction的屬性值,ignorehierarchy值預設為true,設定為false後會將父類和子類的屬性一起返回。
<
result
type
="json">
<
param
name
="ignorehierarchy">
false
param
>
result
>
false
5.4. includeproperties 引數:輸出結果中需要包含的屬性值,這裡正規表示式和屬性名匹配,可以用「,」分割填充多個正規表示式。
如:輸出person的所有屬性
<
result
type
="json">
<
param
name
="includeproperties">
person.*, person\.name
param
>
result
>
person.*, person\.name
5.5. excludeproperties 引數:輸出結果需要剔除的屬性值,也支援正規表示式匹配屬性名,可以用「,」分割填充多個正規表示式,類同4.4.
struts2 json傳遞物件
今天在用struts2 非同步請求從後台傳乙個物件到前台時遇到了乙個小小的問題,現在此作乙個標記,把主要的 貼上以作備忘。struts.xml systemcontactor username,systemcontactor cellphone,systemcontactor notesmail u...
超級令人鬱悶的struts2 JSON資料傳遞
今天超級鬱悶,struts2向前臺返回json資料時一直為空,最後才發現一直沒有寫get方法。action value templateupload results public string templateupload catch exception e return success resul...
Struts2 Json 獲取基類的屬性
使用struts2 json預設只能獲取當前類 action 的屬性,對於基類的屬性是遮蔽了的。例如 public abstract class baseacion extends actionsupport public class myaction extends baseaction meth...