2012-04-10 8 views
5

mam po wprowadzeniuJak zawierać pola klasy nadrzędnej w odpowiedzi json za pomocą zastrzałów 2 json wtyczki

public abstract class BaseAcion extends ActionSupport { 
    private String result; 
    private String message; 

    //getters, setters 
} 

public class MyAction extends BaseAction { 
    private String myFirstField; 
    private String mySecondField; 

    public String execute() { 
     ... 
     myFirstField = "someValue"; 
     mySecondField = "someOtherValue"; 
     ... 
     result = SUCCESS; 
     message = "Some message here"; 
     ... 
     return result; 
    } 

    //methods, getters, setters 
} 

Użyłem wtyczki Struts2-json, mapowanie działanie jest

<package name="my-package" namespace="/" extends="json-default" > 
    <action name="myAction" class="MyAction"> 
     <result type="json"></result> 
    </action> 
</package> 

odpowiedź, że otrzymać coś takiego.

{ 
    "myFirstField":"someValue", 
    "mySecondField":"someOtherValue" 
} 

Chcę również otrzymać pola "wynik" i "wiadomość".

Jak mogę uwzględnić pola BaseAction w odpowiedzi na json?

Odpowiedz

11

Poprzez właściwości domyślnych zdefiniowanych w klasach bazowych „root” obiektu nie będzie w odcinkach, do serializacji właściwości we wszystkich klasach bazowych (do obiektu) ustaw „ignoreHierarchy” false w wyniku JSON:

coś jak

<result type="json"> 
    <param name="ignoreHierarchy">false</param> 
</result> 

szczegółowe informacje znajdują się w dokumentacji pluginu JSON

+0

dziękuję. Ale będzie serializować wszystkie właściwości rodzica. Chcę tylko dwóch właściwości rodzica w jsonie. Chyba muszę użyć "excludeProperties" w każdym mapowaniu akcji. Czy istnieje jakiś czystszy sposób? –

+1

tak, to jest sposób, aby wykluczyć je stworzyć wewnętrzną klasę w swojej Akcji, która zawiera tylko informacje, które chcesz uwzględnić w JSON i ustawić go jako bazę/obiekt główny do marszu. –

+0

Zamiast tworzyć wewnętrzną klasę w każdej akcji, myślę, że lepiej jest rozszerzyć typ wyniku JSON na swój własny sposób. Zamierzam zagłębić się w wtyczkę json. Dzięki Umeshowi za cenne rozwiązanie i pomysły. –

Powiązane problemy