2012-10-05 12 views
6

Desidero inviare il mio oggetto JSON da Javscript a Azione Struts2.Azione da JSON Jquery a Struts2

Esempio JSON oggetto

{ 
     "lists":["list1","list2","list3","list4","list5"], 
     "maps": { 
      "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1" 
     }, 
     "number1":123456789, 
     "numberarray1":[1,2,3,4,5,6,7,8,9], 
     "string1":"A", 
     "stringarray1":["A1","B1"] 
    } 

mio Jquery Ajax

$.ajax({ 
    type: 'POST', 
    url: 'json/JSON.action', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    async: false , 
    contentType: 'application/json; charset=utf-8', 
    success: function(){window.alert('Done');} 
}); 

struts.xml config

<action name="JSON" class="com.actions.json.JsonAction" method="getJSON"> 
    <result type="json"/> 
</action> 

My Class Action

public class JsonAction extends ActionSupport { 


    private String data; 


    public String getJSON() { 


     return ActionSupport.SUCCESS; 
    } 

    public String getData() { 
     return data; 
    } 

    public void setData(String data) { 
     this.data = data; 
    } 



} 

Il mio problema è come ricevere l'oggetto JSON nella classe Action.

NOTA: POSTO DI oggetto JSON è successo .. io non so come riceverlo tramite Class Action .. PLEASE HELP Grazie

+0

puoi condividere la tua classe di azione. Inoltre hai anche definito il tipo di risultato json nel tuo struts.xml e definito interceptor –

+0

'class =" coma, ctions.json.JsonAction "' typo in 'coma, ctions'? – Daniel

+0

bene già che usi il plugin (json) in modo che il plug-in sia in grado di riempire la tua classe di azione con i dati JSON postati dalla richiesta, tutto quello che devi fare attenzione al formato JSON e alcune regole minori, dare un'occhiata al plugin Documenti. –

risposta

6
  1. C'è un errore di battitura nella vostra entrata struts.xml
  2. Hai definito risultato di tessere e intercettore in struts.xml. Please see this link
  3. Il codice JSON che si invia al server, non contiene alcuna chiave data. Quindi sarà sempre nullo. Poiché json è indicato come oggetti. È necessario convertire JSON in oggetti Java in questo modo.

Approccio 1.

Creare setter per lists,maps,number1,numberarray1,string1 e così via. Nella parte superiore di this link, è definito il modo per farlo. Quindi puoi accedere a tutte le variabili in questo modo.

Approccio 2. Nella javascript definire un nuovo oggetto.

var sentData ={}; 
sentData ["sentData "] = data; 
// And in your ajax call , 
data: JSON.stringify(sentData), 

E nella tua classe di azione, crea getter e setter per questo.

Map<K.V> sentData = new HashMap<K,V>(); 

Questo vi darà l'intero oggetto JSON come una Mappa.

+0

il mio problema è che i miei dati in azione sono sempre uguali a zero – newbie

+0

non capisco – newbie

+0

non posso fare questo lavoro :( – newbie

Problemi correlati