我在 Spring Boot 控制器中有一個休息請求物體,定義如下:
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
}
uj5u.com熱心網友回復:
只需添加@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否則它不起作用。至少在我之前遇到過這個問題的春季版本中。
uj5u.com熱心網友回復:
這怎么樣?
@Size(min=1)
private List<Long> ids;
uj5u.com熱心網友回復:
如果這種依賴關系,@Size 或 @NotNull 應該可以完成這項作業
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
被指定。
也不要忘記@Valid 注釋。
陣列的另一種方法是在模型中初始化它們,所以即使它沒有在 requestbody 中指定,你也會得到它的初始化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479455.html
