2012-04-10 14 views
5

Ho seguito dell'attuazioneCome includere campi della classe genitore in risposta JSON utilizzando montanti 2 JSON plug

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 
} 

Ho usato Struts2-JSON plug-in, la mappatura azione è

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

La risposta che ho ricevere è qualcosa di simile.

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

Desidero ottenere anche i campi "risultato" e "messaggio" in risposta.

Come posso includere i campi BaseAction nella risposta JSON?

risposta

11

Con proprietà predefinite definite classi di base dell'oggetto "radice" non verrà serializzato, per serializzare proprietà in tutte le classi di base (fino a Object) impostare "ignoreHierarchy" false nel risultato JSON:

qualcosa di simile

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

per i dettagli fare riferimento alla documentazione di JSON plug

+0

grazie. Ma serializzerà tutte le proprietà del genitore. Voglio solo due proprietà del genitore in json. Suppongo di dover utilizzare "excludeProperties" in ogni mapping di azioni. C'è un modo più pulito? –

+1

sì, questo è il modo per escluderli, altrimenti creare una classe interna all'interno di Action che contiene solo le informazioni che si desidera includere nel JSON e impostarlo come oggetto base/root per il marshal. –

+0

Invece di creare una classe interna in ogni azione, penso che sia meglio estendere il tipo di risultati JSON a modo mio. Sto andando a tuffarmi nel plugin JSON. Grazie a Umesh per la tua preziosa soluzione e idee. –

Problemi correlati