【发布时间】:2017-08-14 10:16:42
【问题描述】:
大家好。
我有一些数据,由 jQuery DataTable 给出,我使用 Ajax 和数据元素发送到 Spring Controller。更具体地说,ajax函数片段是:
$.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>
在网上搜索,我发现可能需要明确设置对象映射器;所以,我找到了我的配置(Spring Boot 和 Jackson Framework,都在上一个版本)这个:
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
jsonConverter.setObjectMapper(objectMapper);
return jsonConverter;
}
放在public class MvcConfiguration extends WebMvcConfigurerAdapter 文件中。
数据作为对象传递给Controller:
$('#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 控制台没有错误;
所以,我不明白是我错误的对象映射器配置还是取决于我在控制器或其他设备上实现的内容。
【问题讨论】:
-
使用 PostMapping 注解,您不需要指定 @ResponseBody 到方法。此外,您必须返回 POJO 对象而不是 ModelAndView 来回写以响应您的 REST 服务。您还可以从 PostMapping 中删除 .json。
标签: java jquery ajax spring spring-mvc