簡體   English   中英

如何在 Spring 引導中使用 @Valid 驗證 object?

[英]How validate an object using @Valid in Spring Boot?

我正在研究 Spring 引導項目,我正在嘗試驗證 object 中的一些字段。

實際上我有一個接受參數的 API。 我知道我可以像這樣在 API 聲明中使用@Valid

@GetMapping(value="/...")
Object myMethod(@RequestParam(value="name") @Size(min = 3) String name)

但我不想在那里驗證。 我有一個“過濾器” object 來驗證這些值,所以我期望類似:

Controller 文件

@override
public Object myMethod(String name){
  @Valid Filter filter = new Filter(name)
}

而且過濾器不是一個實體,只是一個帶有驗證標簽的 class :

public class Filter

  @Size(min = 3)
  private String name;

  public Filter(name){
    this.name = name;
  }

  // getters and setters

所以想法是使用@Valid創建 object 並在任何驗證不成功時拋出異常。 這可能嗎?

我找到了多種解決方案來驗證查詢參數、正文請求等,但不是驗證使用new創建的單個 object 。

據我所知,這是不可能的。 最接近您的案例的解決方案是手動驗證實體:

@Autowired
private Validator validator;

然后像這樣驗證您的 object :

@Override
public Object myMethod(String name){
    Filter filter = new Filter(name);
    validator.validate(filter);
}

@Valid有以下注解目標:

  • 方法
  • 場地
  • 建設者
  • 范圍
  • TYPE_USE

由於它沒有LOCAL_VARIABLE目標,因此無法將其用於方法主體內的變量驗證。

由於TYPE_USE主要用作類型檢查的支持注釋,您不會收到編譯錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM