我正在使用 javax 驗證 api 驗證欄位(用戶)。
用戶:
@Data
public class User {
public String name;
@Min(18)
public int age;
public User(String nameString, int age) {
super();
this.nameString = nameString;
this.age = age;
}
控制器類中的處理程式方法:
@RestController
public class ControllerMain {
@PostMapping("userdata")
//Here is BindingResult !!
public void validdata(@Valid @RequestBody User user,BindingResult bindingResult) {
}
}
用于例外處理的 ControllerAdvice 類
@ControllerAdvice
public class ExceptionHandlingController {
@ExceptionHandler({MethodArgumentNotValidException.class, HttpMessageNotReadableException.class})
public void invalidinput() {
//This should be printed on console but its not.Kindly help!
System.out.println("Invalid Input!");
}
}
如果我從控制器類中的處理程式方法中洗掉 BindingResult 引數,控制臺上會列印“無效輸入”。為什么這樣?
uj5u.com熱心網友回復:
它是 Spring MVC 規范。
1.3.3. 處理程式方法 >@RequestBody :
您可以
@RequestBody與javax.validation.Valid或 Spring 的@Validated注解結合使用,這兩者都會導致應用標準 Bean 驗證。默認情況下,驗證錯誤會導致 aMethodArgumentNotValidException,它會變成 400 (BAD_REQUEST) 回應。或者,您可以通過ErrorsorBindingResult引數在控制器內本地處理驗證錯誤,如以下示例所示:@PostMapping("/accounts") public void handle(@Valid @RequestBody Account account, BindingResult result) { // ... }
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360462.html
