[英]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
有以下注解目標:
由於它沒有LOCAL_VARIABLE
目標,因此無法將其用於方法主體內的變量驗證。
由於TYPE_USE
主要用作類型檢查的支持注釋,您不會收到編譯錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.