Java 使用Jackson框架的@RequestBody注释的Spring引导ObjectMapper
嗨,伙计们 我有一些数据,由jQuery数据表提供,我使用Ajax和数据元素发送给Spring控制器。更具体地说,ajax函数片段是:Java 使用Jackson框架的@RequestBody注释的Spring引导ObjectMapper,java,jquery,ajax,spring,spring-mvc,Java,Jquery,Ajax,Spring,Spring Mvc,嗨,伙计们 我有一些数据,由jQuery数据表提供,我使用Ajax和数据元素发送给Spring控制器。更具体地说,ajax函数片段是: $.ajax({ url: "../todaydatarecover.json", type: "post", data: dataToSend, 正如我在Stack上的另一篇文章中所解释的,我在控制器中使用了(导致“
$.ajax({
url: "../todaydatarecover.json",
type: "post",
data: dataToSend,
正如我在Stack上的另一篇文章中所解释的,我在控制器中使用了(导致“数据”的存在)RequestBody注释:
@PostMapping(value="/todaydatarecover.json")
@ResponseBody
public ModelAndView todayInfoAndIdRecover(ModelAndView model, HttpServletRequest request,
@RequestBody TodayData todayData) throws IOException
{
而且,正如我所解释的,我创建了一个类,该类包含ajax发送给控制器的变量;在方法符号中,您可以确定她的名字是TodayData。这就是实现:
public class TodayData
{
private long dateInBox;
private String nameInBox;
private String typeInBox;
<follow setters and getters>
放在公共类MVCConfigureAdapter
文件中的配置扩展了WebMVCConfigureAdapter
数据作为对象传递给控制器:
$('#eventsdatageneral').on('click', '.btn.btn-info', function(event)
{
var today_date = new Date().getTime();
var dataToSend = new Object();
dataToSend.dateInBox= today_date;
dataToSend.nameInBox = host_name;
dataToSend.typeInBox = type_name;
问题是,当我单击必须启用发送的按钮时,出现404错误。
对象似乎格式良好;在控制台上,我得到了这个:
参数似乎是正确的:
我在Java控制台上没有错误
所以,我不明白的是,如果我错误地配置了对象映射器,或者取决于我在控制器上实现了什么,或者其他。您使用的是
@RequestBody
这意味着您的控制器需要一个有效负载,所以您需要在发送它之前序列化您的JavaScript对象,否则,它将作为url表单发送
$.ajax({
url: "../todaydatarecover.json",
type: "post",
data: JSON.stringify(dataToSend),
...
});
此外,您的请求映射看起来是错误的。您返回的是模型和视图
,但使用的是@ResponseBody
。它们不应该一起使用,将ModelAndView
返回到ajax请求是没有意义的
我建议您从请求映射中删除扩展(.json
)。它应该只是:
@PostMapping(value="/todaydatarecover")
您需要在代码中做一些更改
TodayData
:
$('eventsdatageneral')。在('click','.btn.btn info',函数(事件)
{
var today_date=new date().getTime();
var dataToSend={};
dataToSend[“dateInBox”]=今天\u日期;
dataToSend[“nameInBox”]=主机名;
dataToSend[“typeInBox”]=键入\u名称;
$.ajax({
url:“../todaydatarecover.json”,
类型:“post”,
数据:JSON.stringify(dataToSend),
ModelAndView
和@ResponseBody
不应该一起使用,因为当我们在方法上使用@ResponseBody
时,我们是说我们不希望生成视图,并且对象将作为响应体的一部分返回url模式
,或者更正您作为.json
发送的url使用PostMapping注释,您不需要指定@ResponseBody to方法。您还必须返回一个POJO对象而不是ModelAndView来写回对REST服务的响应。此外,您还从PostMapping.Thnaks@RahulO中删除了.json。您的响应使我的代码正常工作。我非常感谢。
@PostMapping(value="/todaydatarecover")