2013-08-30 15 views
32

Muszę wysłać ciąg JSON do kontrolera Spring MVC.Ale nie mam żadnych powiązań formularza do niego, wystarczy wysłać zwykłe dane JSON do klasy Controller.I am wykonywanie wywołania jQuery AJAX do metody Controller, podobnie jak poniższy kod.przekazywanie danych JSON do kontrolera Spring MVC

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

Ale w jaki sposób mogę go pobrać w metodzie sterownika (uwaga: to tylko zwykłe dane JSON, a nie przesłanie formularza).

Odpowiedz

42

Dodaj następujące zależności

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

Zmienić zapytanie następująco bok

$.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 - Covert Json Przedmiotem Java
@ResponseBody - konwersja obiektu Java json

+0

proszę dodać ur założenia o osobie –

+0

Osoba jest normalna klasa POJO. Tutaj używamy danych typu Person. –

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. Kontroler

      @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

Skąd pochodzi funkcja .val()? – MNM

1

Można stringify ten obiekt JSON z JSON.stringify (JSONObject) i odbierać go na kontrolerze jako ciąg.

W kontrolerze można użyć javax.json do konwersji i manipulowania nim.

Pobierz i dodaj .jar do biblioteki projektu i zaimportuj obiekt JsonObject.

Aby utworzyć obiekt json, można użyć

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

Aby odczytać go z łańcucha, można użyć

JsonReader jr = Json.createReader(new StringReader(jsonString)); 
JsonObject json = jsonReader.readObject(); 
jsonReader.close(); 
Powiązane problemy