我在JSON中向Spring MVC Controller发送了几个'fields'和'lists',如下所示:
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
答案 0 :(得分:5)
使listOfIds成为一个字符串数组而不是一个字符串。
'listOfIds' : ['350234983', '378350950'],
答案 1 :(得分: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。)
从控制器定义下面的bean返回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
$.ajax({
url : 'testURL.do',
type : 'post',
data : data,
cache : false,
dataType : 'json',
success : function (jsonResponse) {
var jsonValue = $.parseJSON(jsonResponse.paramName);
},
error : function (error) {}
});
在mvc-servlet.xml中的viewsResolver配置
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/path/views.xml</value>
</property>
</bean>