2013-08-30 35 views
32

Devo inviare una stringa JSON al controller Spring MVC.Ma non ho alcun binding di moduli, ho solo bisogno di inviare un semplice dato JSON alla classe Controller. effettuare chiamate jQuery AJAX al metodo Controller come il seguente codice.passare i dati JSON a un controller MVC Spring

$.ajax ({ 
    url: "./save", 
    type: "POST", 
    data: JSON.stringify(array), 
    dataType: "json", 
    contentType: "application/json; charset=utf-8", 
    success: function(){ 
     alert("success "); 
    } 
}); 

Ma come faccio a recuperare nel metodo Controller (Nota: è solo dati JSON semplice e non un invio di un modulo)?.

risposta

42

Aggiungere le seguenti dipendenze

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.7</version> 
</dependency> 

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.7</version> 
</dependency> 

richiesta Modificare come segue lato

$.ajax({ 
    url:urlName,  
    type:"POST", 
    contentType: "application/json; charset=utf-8", 
    data: jsonString, //Stringified Json Object 
    async: false, //Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation 
    cache: false, //This will force requested pages not to be cached by the browser   
    processData:false, //To avoid making query String instead of JSON 
    success: function(resposeJsonObject){ 
     // Success Message Handler 
    } 
}); 

controller

@RequestMapping(value = urlPattern , method = RequestMethod.POST) 
public @ResponseBody Person save(@RequestBody Person jsonString) { 

    Person person=personService.savedata(jsonString); 
    return person; 
} 

@RequestBody - oggetto JSON Covert di java
@ResponseBody - convertire oggetto Java a JSON

+0

Si prega di aggiungere ur ipotesi sulla persona –

+0

persona è una classe POJO normale. Qui stiamo usando i dati del tipo Persona. –

4
  1. Html

    $('#save').click(function(event) {   
        var jenis = $('#jenis').val(); 
        var model = $('#model').val(); 
        var harga = $('#harga').val(); 
        var json = { "jenis" : jenis, "model" : model, "harga": harga}; 
        $.ajax({ 
         url: 'phone/save', 
         data: JSON.stringify(json), 
         type: "POST",   
         beforeSend: function(xhr) { 
          xhr.setRequestHeader("Accept", "application/json"); 
          xhr.setRequestHeader("Content-Type", "application/json"); 
         }, 
         success: function(data){ 
          alert(data); 
         } 
        }); 
    
        event.preventDefault(); 
    }); 
    
    1. controller

      @Controller 
      @RequestMapping(value="/phone") 
      public class phoneController { 
      
          phoneDao pd=new phoneDao(); 
      
          @RequestMapping(value="/save",method=RequestMethod.POST) 
          public @ResponseBody 
          int save(@RequestBody Smartphones phone) 
          { 
           return pd.save(phone); 
          } 
      
    2. Dao

      public Integer save(Smartphones i) { 
          int id = 0; 
          Session session=HibernateUtil.getSessionFactory().openSession(); 
          Transaction trans=session.beginTransaction(); 
          try { 
           session.save(i); 
           id=i.getId(); 
           trans.commit(); 
          } 
          catch(HibernateException he){} 
          return id; 
      } 
      
+0

Da dove viene la funzione .val()? – MNM

1

È possibile stringa i l'oggetto JSON con JSON.stringify (JsonObject) e riceverlo sul controller come stringa.

Nel controller, è possibile utilizzare javax.json per convertire e manipolare questo.

Scaricare e aggiungere il file .jar alle librerie di progetto e importare JsonObject.

Per creare un oggetto JSON, è possibile utilizzare

JsonObjectBuilder job = Json.createObjectBuilder(); 
job.add("header1", foo1); 
job.add("header2", foo2); 
JsonObject json = job.build(); 

Per leggerlo da String, è possibile utilizzare

JsonReader jr = Json.createReader(new StringReader(jsonString)); 
JsonObject json = jsonReader.readObject(); 
jsonReader.close(); 
Problemi correlati