1

Struts 2アプリケーションがあり、JSONを使用して情報をAjaxベースのクライアントに送信しています。現在、負荷モデルにはいくつかの変更があり、非常に複雑になり、アプリケーションが遅すぎます。したがって、それぞれの場合にシリアル化されるフィールドを減らす必要があります。だから私はこのようなものを持っています:

オブジェクトのリストを取得するためのいくつかのメソッドを使用したいくつかのアクション:

public class FooAction{
    private List<FooObject> fooObjects;

    public List<FooObject> list1(){ ... };

    public List<FooObject> list2(){ ... };

}

たとえば、モデルからのこのオブジェクト。

public class FooObject{
    private String foo1;
    private String foo2;
    private String foo3;
    private String foo4;
}

そのモデルでは、Ajaxからの呼び出しで4番目のプロパティは必要ないと想定しているため、シリアル化されないようにJSONアノテーションを追加します。

public class FooObject{
    private String foo1;
    private String foo2;
    private String foo3;
    private String foo4;

    @JSON(serialize=false)
    public String getFoo4(){...}
}

問題はこんな感じです。

  • この方法ではとlist1()だけが必要なので、この方法だけでのシリアル化は避けたいfoo1foo2foo3
  • この方法ではとlist2()だけが必要なので、この方法だけでのシリアル化は避けたいfoo1foo3foo2

したがって、問題は、各メソッドでシリアル化する必要があるプロパティをカスタマイズする簡単な方法であるかどうかです。たとえば、strutsのxmlでそれをカスタマイズできれば素晴らしいと思います。

<action name="list1" class="fooObject" method="list1">
    <result type="json"/>
</action>

<action name="list2" class="fooObject" method="list2">
    <result type="json"/>
</action>

ありがとう

4

1 に答える 1

3

ドキュメントの「シリアル化と逆シリアル化のカスタマイズ」セクションを確認できstruts2ます。私はそれがあなたを助けると思います。

于 2012-07-19T11:18:59.527 に答える