【问题标题】:@RequestBody list is never empty, just null@RequestBody 列表永远不会为空,只是 null
【发布时间】:2019-07-16 20:52:22
【问题描述】:

我的任务是检查响应正文中的列表是否为空。如果它是空的,我会抛出异常,如果不是,我会继续使用它。问题是由于搜索限制等原因,GET 请求是由 POST 请求完成的。

方法如下:

@PostMapping("/fees")
public List<FeeSetupDTO> getFeeSetups(@RequestBody List<FeeRequest> request
) {
    if (!request.isEmpty()) {  //request size = 1
        try {
            return ...;
        } catch (NotImplementedException e) {
            ...;
        }
    } else {
        throw new PublicException(PMT_NOT_FOUND); //Never thrown because list is never empty
    }
}

我的请求中的请求正文如下所示:

[{ }] //Empty list

问题是我得到的列表永远不会是空的,它的大小是 1 并且它只是 null,但它仍然算作列表中的一个元素。每个 FeeRequest 都由以下对象组成:

feeName = null;
feeCode = null;
feeAmount = null; 

您知道如何检查请求正文中的列表是否为空吗?

【问题讨论】:

  • 你可以用@Valid注解验证List,像@alid @RequestBody List&lt;FeeRequest&gt; request这样,Spring会自动验证。
  • @cнŝdk 但是,如果我得到正确的结果,它仍然不会抛出表明列表为空的异常。
  • 请显示请求
  • @ekiryuhin 你是什么意思?请求看起来像这样:POST {url}/fees 而我上面提到的请求正文只是一个空列表:[{ }]
  • @Martin 你总是可以配置一个验证器来抛出所需的异常,检查Configuring a Validator for use by Spring MVC

标签: java spring rest


【解决方案1】:

一个空的list是这样的[]

您发送的列表[{ }] 不为空,您发送的list 带有一个空的object

【讨论】:

  • 哦,现在我觉得自己很蠢,所以我做的一切都正确,只是请求不好,谢谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
相关资源
最近更新 更多