Come analizzare le matrici di oggetti restituiti da DWR?
Domanda
DWR gestisce gli elenchi di primitivi piuttosto semplici. Non sono riuscito a trovare se la matrice di oggetti restituita da una chiamata del metodo DWR rappresenta un oggetto JSON. Qualche indizio? O devo restituire una stringa JSON che rappresenta l'array di oggetti al browser?
Soluzione
Questa risposta è un po 'in ritardo, ma qui va :)
Buone notizie: DWR gestisce anche array e raccolte Java in modo molto diretto. Restituiscili e sul lato client otterrai oggetti Array JavaScript. (In casi tipici come primitive o stringhe all'interno dell'array o della raccolta, vale a dire. Se il contenuto è qualcosa di più esotico, potrebbe essere necessario definire i convertitori; più sotto.)
Ecco una citazione da Documentazione DWR (sottolineatura mia):
Per impostazione predefinita sono tutte le seguenti convertito per te senza ulteriori Dichiarazione:
- Tutti i tipi primitivi, booleani, int, doppi, ecc.
- Le versioni basate su Class di questi valori booleani, interi, ecc.
- java.lang.String
- java.util.Date e i 3 derivati ??SQL
- array di quanto sopra
- Raccolte (elenchi, set, mappe, iteratori, ecc.) di quanto sopra
- Oggetti DOM (come Element e Document) da DOM, XOM, JDOM e DOM4J
Quindi sicuramente non avrai bisogno di stringhe JSON per queste (sebbene possa essere una buona opzione per strutture di dati più complicate).
Puoi effettivamente restituire molti altri tipi di oggetti senza fare molto lavoro manuale perché DWR viene fornito con " convertitori " per molti usi tipici. Ad esempio, per personalizzare il tuo bean " bean " gli oggetti Java stile funzionano nel JS sul lato client, tutto ciò che devi dire in dwr.xml
è che vuoi usare convertitore di bean :
<convert converter="bean" match="com.company.YourBean" />
Anche se il tuo metodo restituisce un Elenco (o array) di quegli oggetti bean ...
public static List<YourBean> getData(){ ... }
... è sufficiente la configurazione sopra, il che è abbastanza carino.