2012-10-05 41 views
6

Deseo enviar mi objeto JSON de Javscript a Struts2 Action.JSON Jquery a Struts2 acción

JSON Muestra de objetos

{ 
     "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"] 
    } 

Mi 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> 

mi clase de acción

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; 
    } 



} 

Mi problema es cómo recibir el objeto JSON en la clase de acción.

NOTA: PUESTO DE objeto JSON tiene éxito .. Yo no sé cómo lo reciben a través de la clase de acción .. POR FAVOR AYUDA Gracias

+0

puede compartir su clase de acción. También ha definido también el tipo de resultado json en su struts.xml y el interceptor definido –

+0

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

+0

bueno, ya está usando el complemento (json) para que el complemento sea lo suficientemente capaz como para llenar su clase de acción con los datos JSON publicados desde la solicitud, todo lo que necesita para cuidar el formato json y algunas reglas menores, eche un vistazo al plugin docs. –

Respuesta

6
  1. Hay un error tipográfico en su entrada struts.xml
  2. ¿Ha definido el resultado de los mosaicos y el interceptor en struts.xml. Please see this link
  3. El json que está enviando al servidor, no contiene ninguna clave data. Entonces será siempre nulo. Dado que json se denota como objetos. Necesita convertir JSON en objetos Java de esta manera.

Enfoque 1.

Crear setters para lists,maps,number1,numberarray1,string1 y así sucesivamente. En la parte superior de this link, se define la manera de hacerlo. Entonces puede acceder a todas las variables de esta manera.

Aproximación 2. En su javascript, defina un nuevo objeto.

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

Y en su clase de acción, cree getters y setters para esto.

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

Esto le dará todo el objeto JSON como un mapa.

+0

mi problema es mis datos en acción siempre es igual a nulo – newbie

+0

no entiendo – newbie

+0

no puedo hacer que esto funcione :( – newbie

Cuestiones relacionadas