2013-02-26 44 views
5

Tôi gửi vài 'lĩnh vực' và 'danh sách' trong JSON để mùa xuân MVC điều khiển như sau:danh sách gửi trong yêu cầu JSON

var data = { 
     'message' : 'Text data', 
     '**listOfIds**' : '350234983, 378350950', 

     'synchronizerToken' : formTokenId 

}; 

$.ajax({ 
     url : 'testURL.do', 
     type : 'post', 
     data : data, 
     cache : false, 
     dataType : 'json', 

     success : function (jsonResponse) {}, 

     error : function (error) {} 
}); 

Trong điều khiển Spring MVC xử lý URL trông như thế này:

@RequestMapping(value = "/testURL.do", method = RequestMethod.POST) 
public ModelAndView executeTest(ListData listData) { 
     ModelAndView modelAndView = null; 
     JsonResponse jsonResponse = null; 

     modelAndView = executeTransaction(listData); 
     } 

     return modelAndView; 
    } 


ListData.java 

public class ListData{ 
    private String   message; 
    private List<String> **listOfIds** = new ArrayList<String>(); 

//getter/setters 

Vấn đề là listOfIds không được trả lại dưới dạng danh sách. Nó được trả lại dưới dạng chuỗi đơn '350234983, 378350950'

Có ai có thể đề xuất nếu có bất kỳ điều gì sai ở đây hoặc có cách nào tốt hơn để nhận danh sách phản hồi JSON không?

Cảm ơn, -Fonda

Trả lời

5

Hãy listOfIds một mảng các chuỗi thay vì một chuỗi duy nhất.

'listOfIds' : ['350234983', '378350950'], 
+0

tôi đã cố gắng mà ban đầu nhưng tôi có được điều này: java .lang.NumberFormatException: Đối với inp ut chuỗi: "" \t tại java.lang.NumberFormatException.forInputString (NumberFormatException.java:48) – McQueen

+0

là nó bởi vì định nghĩa đối tượng là không đúng trong java: Danh sách tin ** listOfIds ** = new ArrayList (); – McQueen

0

1.)

Add gson jar 

import com.google.gson.Gson;//import 

Gson gson = new Gson();//create instance 

gson.toJson(ListData);//convert it to json 

2.)

Xác định bên dưới đậu trở lại jsonView từ bộ điều khiển.

<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/> 

khiển

import org.springframework.ui.ModelMap; 

@RequestMapping(value = "/testURL.do", method = RequestMethod.POST) 
public String executeTest(ModelMap model, ListData listData) { 
    ModelAndView modelAndView = null; 
    JsonResponse jsonResponse = null; 
    modelAndView = executeTransaction(listData); 
    model.addAttribute("paramName", modelAndView); 
    } 

    return "jsonView"; 
} 

Thay đổi trong ajax

$.ajax({ 
    url : 'testURL.do', 
    type : 'post', 
    data : data, 
    cache : false, 
    dataType : 'json', 

    success : function (jsonResponse) { 
     var jsonValue = $.parseJSON(jsonResponse.paramName); 
    }, 

    error : function (error) {} 
}); 

viewsResolver config trong MVC-servlet.xml

<bean class="org.springframework.web.servlet.view.XmlViewResolver"> 
    <property name="location"> 
     <value>/path/views.xml</value> 
    </property> 
</bean> 
+0

Cảm ơn nhưng chúng tôi không sử dụng Gson. Chúng tôi đang sử dụng Jackson – McQueen

+0

Điểm số 2 không liên quan đến gson, đó là mùa xuân – nav0611

+0

Ok cảm ơn vì vậy chỉ cần xác định chế độ xem này trong tệp xml sẽ xử lý ánh xạ tự động? Hoặc tôi cần phải làm thêm chế biến trong bộ điều khiển? – McQueen

Các vấn đề liên quan