2013-01-21 6 views
6

Sto usando struts2-json-plugin-2.2.3.jar. e cercando di serializzare filterList proprietà di classe come questa:includeProperties in JSON struts2 plug-in non funzionante

struts.xml codice

<action name="jsonUserFilterListAction" class="com.my.fitnessb.actions.UserArticlesAction" method="filterList"> 
     <result name="success" type="json"> 
      <param name="includeProperties">filterList</param> 
     </result> 
</action> 

classe Azione

public class UserArticlesAction extends ActionSupport implements SessionAware, ServletRequestAware { 

    private List<FilterType> filterList; 
    HttpServletRequest request; 

    public String filterList() { 
    filterList = new ArrayList<FilterType>(); 
    filterList.add(new FilterType(10, "Latest Articles")); 
    filterList.add(new FilterType(1, "Trending Articles")); 
    filterList.add(new FilterType(2, "Top Rated Articles")); 
    filterList.add(new FilterType(3, "Most Viewd Atricles")); 
    filterList.add(new FilterType(4, "All Atricles")); 
    return SUCCESS; 
    } 
    //setter & getter of filterList 
} 

ma io non sono in grado di ottenere questa proprietà di classe di FilterType.

+0

è possibile ottenere il valore se il parametro 'includeProperties' non è usato? – Quincy

+0

Mi viene eseguita la serializzazione di tutti gli attributi nella classe azione se non si utilizza il parametro includeProperties –

risposta

6

Supponendo che i campi nel FilterType sono chiamati id e desc

Prova

<param name="includeProperties"> 
filterList\[\d+\]\.id, 
filterList\[\d+\]\.desc 
</param> 
+1

Grazie mille, ha funzionato per me. –

+0

Nessun problema, anche se funziona, penso che sia difficile elencare tutte le proprietà ...: / – Quincy

3

Il plug-in Struts2-json seralizza tutti gli attributi di azione nella classe azione.

È un problema che ho dovuto affrontare utilizzando il plugin struts2-json. Anche se lo plugin-doc mostra un esempio funzionante per il parametro includeProperties, non ha mai funzionato per me e non ha mai funzionato dopo così tante prove e googling. Quindi ho dovuto usare excludeProperties per rimuovere i contenuti non necessari dalla serializzazione, invece di specificare cosa voglio serializzare.

+0

ohh ... è così? Penso che sia molto brutto, quindi devo usare excludeProperties per rimuovere i contenuti non richiesti dalla serializzazione, ok grazie ... lo controllerò e tornerò da te se funzionerà. Grazie ancora ... amico –

+0

ho provato con il plug-in di JSON 2.3.8, includeproperties funziona bene. se non funziona nel tuo progetto puoi tracciare il codice sorgente del plugin json (org.apache.struts2.json.JSONWriter) è abbastanza facile. – SalutonMondo

0

Nel caso in cui preferiscono il sapore di annotazione

@ParentPackage("json-default") 
@Namespace("/") 
@ResultPath(value = "/") 
@Results({ @Result(name="firstDir",type="json" 
,params = {"includeProperties","fileList\\[\\d+\\]"} 
) }) 

fileList = new ArrayList<String>(); 
     for (File img : folder.listFiles()) { 
      fileList.add(img.getName()); 
     } 
return "firstDir"