2013-02-26 76 views
5

我在JSON發送一些「字段」和「清單」爲下面的Spring MVC控制器:在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) {} 
}); 

在Spring MVC控制器中的URL處理程序是這樣的:

@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 

問題是listOfIds不作爲列表返回。 它返回一個字符串「350234983,378350950」

任何人都可以提出如果有什麼錯在這裏或者有沒有更好的方式來接收JSON響應列表?

謝謝, -Fonda

回答

5

請listOfIds串而不是單個串的陣列。

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

我想,最初,但我得到這個: 的java .lang.NumberFormatException:用於inp UT字符串: 「」 \t在java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) – McQueen 2013-02-26 21:04:57

+0

是監守對象定義是不正確的在Java: 私人列表 ** ** listOfIds =新的ArrayList (); – McQueen 2013-02-26 21:08:30

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

從控制器定義下面豆返回jsonView。

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

控制器

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

變化阿賈克斯

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

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

    error : function (error) {} 
}); 

viewsResolver在MVC-servlet.xml中配置

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

謝謝,但我們沒有使用Gson。我們正在使用Jackson – McQueen 2013-02-27 18:38:06

+0

點數2與gson無關,它是spring – nav0611 2013-02-28 02:43:20

+0

好的,謝謝,所以只需在xml文件中定義這個視圖就會自動映射嗎?或者我需要在控制器中進行額外的處理? – McQueen 2013-02-28 14:23:59