当rest控制器返回null body时,ajax转到error方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当rest控制器返回null body时,ajax转到error方法相关的知识,希望对你有一定的参考价值。

环境:春季启动2.0,杰克逊序列化

我的rest控制器方法不会返回任何正文,就像ResponseEntity.ok().build()一样,但是ajax不会转到成功方法,它会转到错误方法,并且错误显示“JSON输入的意外结束”

我试过这个: 1.将属性添加到application.properties:spring.jackson.default-property-inclusion: NON_NULL中,它仍然转到错误方法; 2.像这个ResponseEntity.ok("{}")更新返回结果,它会好的;

@PostMapping(value = "/import")
   public ResponseEntity<Void> importRecipients(@ModelAttribute UserRecipientDto userRecipientDto,
                                                @CurrentUser @ApiIgnore User user,
                                                @RequestParam ImportType importType,
                                                @RequestParam String name,
                                                @RequestParam List<Long> ids) {
       Collection<MailRecipient> count = this.service.getRecipients(userRecipientDto, importType, ids);
       UserMailRecipientGroup userMailRecipientGroup = new UserMailRecipientGroup(name, USER_RECIPIENT, count, user);
       userMailRecipientGroupService.saveMailRecipientGroup(userMailRecipientGroup);
       return ResponseEntity.ok().build();
   }

application.yml:

spring:
  jackson:
      serialization:
        write-dates-as-timestamps: true
        write_dates_with_zone_id: true
      time-zone: GMT
      default-property-inclusion: NON_NULL

ajax代码块:

    url: url,
    type: type,
    contentType: "application/json;charset=utf-8",
    headers: {},
    data: param,
    async: true,
    dataType: "json",
    success: function success(data) {
      cb(data);
    }, 
error: function error(request, status_code, text_error) {}

我期待这个: 当我的rest方法返回ok().build()时,ajax会转到成功方法。 我猜ajax转换结果到json发生了一些错误,可能是一些春季引导属性会做到这一点,但我还没有找到。 谢谢!!

答案

不清楚控制器正在扩展哪个类以及ok()方法的导入。

也许尝试使用ResponseEntity

ResponseEntity.ok().build()
另一答案

从返回ok()。build()返回Http Status 200 OK状态。不是吗?

你究竟要归还给客户什么?

如果是某些响应,您可以返回ResponseEntity.ok()。build()或

return Response.ok()。entity(someEntity).build();

我看到返回类型是代码中的ResponseEntity。

请详细说明问题。

编辑:

代码看起来像

@PostMapping(value =“/ import”)

public ResponseEntity<String> importRecipients(@ModelAttribute UserRecipientDto userRecipientDto,

        @CurrentUser @ApiIgnore User user, @RequestParam ImportType 

        importType, @RequestParam String name,

        @RequestParam List ids) {


    Collection count = this.service.getRecipients(userRecipientDto, importType, ids);


    UserMailRecipientGroup userMailRecipientGroup = new UserMailRecipientGroup(name, USER_RECIPIENT, count, user);


    userMailRecipientGroupService.saveMailRecipientGroup(userMailRecipientGroup);


    return new ResponseEntity(HttpStatus.OK);


}

以上是关于当rest控制器返回null body时,ajax转到error方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery ajax 发布时,Httppostedfilebase 始终返回 null

当Kendo网格在PopUp中时,DatasourceRequest始终返回null

通过 AJAX 访问从 Django Rest Framework 返回的数组中的项目时获取“未定义”

Spring rest endpoint不返回body

Ajax 请求 500 错误 - 在 null 上调用成员函数

Laravel:我正在尝试将变量从视图传递到控制器,但它返回 null