2013-08-30 60 views
32

Tôi cần gửi chuỗi JSON tới bộ điều khiển Spring MVC.Nhưng tôi không có bất kỳ ràng buộc biểu mẫu nào, tôi chỉ cần gửi dữ liệu JSON thuần túy đến lớp Controller.I làm cho jQuery AJAX gọi đến phương thức Controller như đoạn mã dưới đây.chuyển dữ liệu JSON tới bộ điều khiển Spring MVC

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

Nhưng làm cách nào để truy xuất nó trong phương thức Bộ điều khiển? (Lưu ý: Đây chỉ là dữ liệu JSON đơn giản chứ không phải gửi biểu mẫu).

Trả lời

42

Thêm sự phụ thuộc sau

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

Sửa yêu cầu như sau

$.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 
    } 
}); 

điều khiển bên

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

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

@RequestBody - đối tượng JSON Covert để java
@ResponseBody - chuyển đổi đối tượng Java để json

+0

Vui lòng thêm giả định ur về người –

+0

Person là một lớp POJO bình thường. Ở đây chúng ta đang sử dụng dữ liệu của kiểu 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. khiển

      @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. Đào

      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

Hàm .val() xuất phát từ đâu? – MNM

1

Bạn có thể stringify đối tượng với JSON.stringify (JSONObject) JSON và nhận được nó trên bộ điều khiển như String.

Trong Bộ điều khiển, bạn có thể sử dụng javax.json để chuyển đổi và thao tác điều này.

Tải xuống và thêm .jar vào libs dự án và nhập JsonObject.

Để tạo một đối tượng JSON, bạn có thể sử dụng

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

Để đọc nó từ String, bạn có thể sử dụng

JsonReader jr = Json.createReader(new StringReader(jsonString)); 
JsonObject json = jsonReader.readObject(); 
jsonReader.close(); 
Các vấn đề liên quan