3

struts2でjsonリクエストとレスポンスを処理するためにjsonプラグインを使用しています。配列データをjson形式で応答して送信したいのですが、できません。FE では、常に空の配列を取得します。以下は、私の Action クラス、struts.xml、および応答です。

テストアクション:

public class TestAction {

private String[] sArray = {"1","2"};
private int[] iArray = {1,2};
private String value = "value";

//getter setter
public String[] getSArray() {
    return sArray;
}
public int[] getIArray() {
    return iArray;
}
public String execute() {
return "success";    
}

struts.xml

<struts>
<package name="name" namespace="/" extends="default,json-default">
       <action name="Test" 
            class="com.actions.TestAction">
            <result name="success" type="json">
                <param name="excludeNullProperties">true</param>
                <param name="includeProperties">sArray,iArray,value</param>
            </result>
        </action>
</package>
</struts>

フロントエンドで次の応答を受け取ります

{"sArray":[],"iArray":[],"value":"value"}
4

1 に答える 1

2

まず第一に、オブジェクト フィールドに単一の小文字 (例: sArray) を使用しないでください。名前を別のものに変更します (例: strArray)。このように、getter/setter の名前を推測する必要はありません。

次に、for arraysのincludeProperties属性の正しい構文は です。struts2-json-plugin^array\[\d+\]

したがって、フィールドがstrArrayありintArray、構成がそのようなものである必要がある場合:

<package name="name" namespace="/" extends="json-default">
  <action name="Test" 
      class="com.actions.TestAction">
    <result name="success" type="json">
      <param name="excludeNullProperties">true</param>
      <param name="includeProperties">^strArray\[\d+\],^intArray\[\d+\],value</param>
    </result>
  </action>
</package>
于 2014-07-03T17:48:46.340 に答える