如何检查 spring 引导休息请求实体中的列表不为空
how to check the list is not null in spring boot rest request entity
我在 spring 引导控制器中有一个 rest 请求实体,定义如下:
package com.dolphin.rpa.application.command.credential;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author xiaojiang.jiang
* @date 2022/05/10
**/
@Data
public class CredentialDeleteCommand {
@NotNull(message = "should not be null")
private List<Long> ids;
@Min(1)
@Max(2)
private Integer mode;
}
现在我想确保 id 不应该为 null 或 size eqauls 0。我试过这些方法:
@NotNull(message = "should not be null")
@NotEmpty(message = "should not be null")
@NotBlank(message = "should not be null")
但是无法工作。我还阅读了没有提到有效列表的官方文档。是否可以验证列表元素?这是我的要求 json:
{
"ids": [
],
"mode": 1
}
这个怎么样?
@Size(min=1)
private List<Long> ids;
@Size 或@NotNull 应该做的工作如果这个依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
已指定。
另外不要忘记@Valid 注释。
数组的另一种方法是在模型中初始化它们,所以即使它没有在 requestbody 中指定,你也会初始化它。
只需添加 @Size(min=1)
即可。
@Data
public class CredentialDeleteCommand {
@NotNull(message = "should not be null")
@Size(min=1)
private List<Long> ids;
@Min(1)
@Max(2)
private Integer mode;
}
错误可能是您调用此对象进行验证的地方。它肯定是来自属于 spring 的实例的某个方法。所以它应该是spring容器的一个bean。
通常你会在控制器的某些方法中使用它,因为控制器已经属于 spring 容器。
@RequestMapping(path="/some-path",method=RequestMethod.POST)
public ResponseEntity doSomething(@Valid @RequestBody CredentialDeleteCommand credentialDeleteCommand){
....
}
请记住,@Valid
应该放在 @RequestBody
之前,否则它不起作用。至少在以前的 spring 版本中我遇到过这个问题。
我在 spring 引导控制器中有一个 rest 请求实体,定义如下:
package com.dolphin.rpa.application.command.credential;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @author xiaojiang.jiang
* @date 2022/05/10
**/
@Data
public class CredentialDeleteCommand {
@NotNull(message = "should not be null")
private List<Long> ids;
@Min(1)
@Max(2)
private Integer mode;
}
现在我想确保 id 不应该为 null 或 size eqauls 0。我试过这些方法:
@NotNull(message = "should not be null")
@NotEmpty(message = "should not be null")
@NotBlank(message = "should not be null")
但是无法工作。我还阅读了没有提到有效列表的官方文档。是否可以验证列表元素?这是我的要求 json:
{
"ids": [
],
"mode": 1
}
这个怎么样?
@Size(min=1)
private List<Long> ids;
@Size 或@NotNull 应该做的工作如果这个依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
已指定。
另外不要忘记@Valid 注释。
数组的另一种方法是在模型中初始化它们,所以即使它没有在 requestbody 中指定,你也会初始化它。
只需添加 @Size(min=1)
即可。
@Data
public class CredentialDeleteCommand {
@NotNull(message = "should not be null")
@Size(min=1)
private List<Long> ids;
@Min(1)
@Max(2)
private Integer mode;
}
错误可能是您调用此对象进行验证的地方。它肯定是来自属于 spring 的实例的某个方法。所以它应该是spring容器的一个bean。
通常你会在控制器的某些方法中使用它,因为控制器已经属于 spring 容器。
@RequestMapping(path="/some-path",method=RequestMethod.POST)
public ResponseEntity doSomething(@Valid @RequestBody CredentialDeleteCommand credentialDeleteCommand){
....
}
请记住,@Valid
应该放在 @RequestBody
之前,否则它不起作用。至少在以前的 spring 版本中我遇到过这个问题。