[英]@NotNull annotation is not working in spring boot
當您使用@NotNull
時,您會阻止String data
具有 null 值。 但是在 postman 中,當您發送帶有空值的數據時,您實際上是在發送帶有空字符串""
的數據。 為了防止null
值和空字符串使用@NotBlank
。
@RestController
@Validated
public class HelloController {
@GetMapping(value = "/path")
public String getData(@Valid @PathParam("data") @NotBlank String data) {
return data;
}
}
如果您想以null
的形式發送data
以檢查@NotNull
是否有效,只需從 postman 參數中取消選中它(不要發送它)。 它應該在您的應用程序中引發異常,即data
不能是 null。
在這種情況下,您應該使用@RequestParam
而不是@PathParams
。 但驗證也可以應用於@PathParam
@GetMapping(path = "extra")
public String doExtraThing(@RequestParam("data") String data) {
return "Data is: " + data;
}
使用@NotNull
如果你直接從瀏覽器點擊這個 api
http://localhost:8080/demo/extra
您應該在控制台中得到一些東西,因為您的默認請求參數是強制性的。
2021-03-06 08:55:20.872 WARN 2936 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'data' is not present]
使其可選使用
@RequestParam(value = "data", required = false) String data
現在當你嘗試點擊 http://localhost:8080/demo/extra?data=,你應該得到
Data is:
現在,當您將其設置為required = false
並從javax.validation.constraints
package 添加@NotNull
注釋並再次點擊 api 時,您應該會收到 503 內部服務器錯誤。
javax.validation.ConstraintViolationException: doExtraThing.data: must not be null
使用 @NotBlank :
您可以使用 javax.validation.constraints 中的javax.validation.constraints
實現相同的行為
@NotNull驗證 object 不是 null。
@NotBlank檢查字符序列(例如字符串)的修剪長度是否為空。
你會在這里更多地在字符串上使用@NotBlank
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.