【发布时间】:2015-12-25 22:28:10
【问题描述】:
我正在我的 jQuery 中构建以下 JSON 并通过 ajax 发送到控制器
var jsonResponse = [];
$(columns).each(function() {
if(!isEmpty($(this))) {
var lang = $(this).find(".language").val();
var item = {
"label": label,
"language": $(this).find(".language").val(),
"value": $(this).find(".value").val()
};
jsonResponse.push(item);
}
});
由于它是单个项目的数组,我需要将它映射到我的控制器中的 ArrayList。
我的模型对象是这样的:
FormModel - 映射到 item JSON 元素
class FormModel {
String label;
String language;
String value;
// getters & setters
}
FormModelWrapper - 映射到array of items
class FormModelWrapper {
private List<FormModel> formModel;
// getters & Setters
}
最后是控制器:
@RequestMapping(value = View Name, method = RequestMethod.POST)
public String performTask( @RequestBody FormModelWrapper wrapper) {
...
}
我已正确配置 Jackson。我实际上已经通过发送 JSON item 元素并在 FormModel 中接受它来验证它。当我使用 json 元素数组时发生 415 错误。
任何帮助将不胜感激。
【问题讨论】:
-
开启 Spring DEBUG 日志,看看它说了什么。
-
两个问题:好奇:为什么你需要一个映射器而不是 List
因为@RequestBody 不起作用? 2. content-type - 既被控制器接受又被客户端发送? -
@prabugp 我尝试使用 List
不起作用。然后我跟着这个:stackoverflow.com/questions/23012841/… 2. 由客户端 'application/json' 发送我没有任何控制权 -
请添加有关如何从 Ajax 请求中请求控制器操作的更多详细信息?!以及您是如何传递 JSON 格式的?
-
@prabugp 当我将它从 FormModelWrapper 改回 List
时它起作用了。需要弄清楚我之前错过了什么。谢谢顺便说一句:)
标签: java jquery json spring-mvc http-status-code-415