![](/img/trans.png)
[英]Display only default message of Spring boot validation - MethodArgumentNotValidException
[英]Spring Boot Validation - How to retrieve input message in MethodArgumentNotValidException handler
我正在使用spring-boot-starter-validation
依賴項為我的應用程序驗證 java bean
我的 Controller 代碼如下
@PostMapping("/testMessage")
ResponseEntity<String> testMethod(@Valid @RequestBody InternalMsg internalMsg) {
return ResponseEntity.ok("Valid Message");
}
內部消息 class
public class InternalMsg implements Serializable {
@NotNull(message = "Msg Num is a required field")
private String msgNumber;
@NotEmpty(message = "Activity Name is a required field")
private String activityName;
}
InternalMsg 樣本輸入 JSON
{
"MSGNUMBER": "12345",
"ACTIVITYNAME": "",
}
我的處理程序代碼如下
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<InternalMsgResponse> handleValidationExceptions(
MethodArgumentNotValidException ex) {
InternalMsgResponse msg = new InternalMsgResponse();
ex.getBindingResult().getAllErrors().forEach((error) -> {
String errorMessage = error.getDefaultMessage(); // Error Message
ack.setStatusNotes(errorMessage);
});
return ResponseEntity.ok().body(msg);
}
根據示例輸入,活動名稱為空,因此我收到一條驗證錯誤消息,即“活動名稱是必填字段”。
對於其他一些處理,我需要在處理程序中獲取輸入 Msg 的值,即我想獲取 msgNumber 值(12345),它是一個 VALID 值。
可能嗎? 如果是這樣,請指導如何在處理程序中檢索這些值。
你可以打電話
ex.getTarget()
這將返回 object。 然后簡單地將其轉換為InternalMsg
如果您使用的是 2.4.x 之前的舊 Spring 引導版本,那么您必須調用
ex.getBindingResult().getTarget()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.