【发布时间】: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<FeeRequest> request这样,Spring会自动验证。 -
@cнŝdk 但是,如果我得到正确的结果,它仍然不会抛出表明列表为空的异常。
-
请显示请求
-
@ekiryuhin 你是什么意思?请求看起来像这样:
POST {url}/fees而我上面提到的请求正文只是一个空列表:[{ }] -
@Martin 你总是可以配置一个验证器来抛出所需的异常,检查Configuring a Validator for use by Spring MVC