検証済みのフォームパラメーターを持つコントローラーがあります。
@PostMapping("/report")
public String reportSubmit(@Valid @ModelAttribute HomeFormInput homeFormInput, Model model, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "home";
}
フォームには、検証ルールを持つ入力フィールドが含まれています。
@Data
public class HomeFormInput {
@NotEmpty(message = "You must provide at least one id")
String input;
String email;
}
id フィールドを空のままにしてテストしようとすると、BAD REQUEST がスローされ、コントローラーのメソッドに入ることさえありません (デバッグしようとしました)。ログには次のように記載されています。
2021-01-17 20:32:51.705 DEBUG 20412 --- [nio-8080-exec-2] swsmmaRequestMappingHandlerMapping : com.fiserv.report.generator.controller.ReportController#homeSubmit(HomeFormInput, Model, BindingResult) 2021- にマッピング01-17 20:32:51.789 DEBUG 20412 --- [nio-8080-exec-2] .wsmmaServletInvocableHandlerMethod: パブリック java.lang.String com.fiserv.report.generator.controller.ReportController でパラメーター [0] を解決できませんでした.homeSubmit(com.fiserv.report.generator.model.HomeFormInput,org.springframework.ui.Model,org.springframework.validation.BindingResult): org.springframework.validation.BeanPropertyBindingResult: 1 エラー オブジェクト 'homeFormInput' のフィールド エラーフィールド「入力」: 拒否された値 []; コード [NotEmpty.homeFormInput.input,NotEmpty.input,NotEmpty.java.lang.String,NotEmpty]; 引数 [org.springframework.context.support. DefaultMessageSourceResolvable: コード [homeFormInput.input,input]; 引数 []; デフォルトメッセージ[入力]]; デフォルト メッセージ [少なくとも 1 つのテスト計画 ID を提供する必要があります] 2021-01-17 20:32:51.791 WARN 20412 --- [nio-8080-exec-2] .wsmsDefaultHandlerExceptionResolver : 解決済み [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 エラー フィールド 'input' のオブジェクト 'homeFormInput' のフィールド エラー: 拒否された値 []; コード [NotEmpty.homeFormInput.input,NotEmpty.input,NotEmpty.java.lang.String,NotEmpty]; 引数 [org.springframework.context.support.DefaultMessageSourceResolvable: コード [homeFormInput.input,input]; 引数 []; デフォルトメッセージ[入力]]; デフォルト メッセージ [少なくとも 1 つのテスト計画 ID を提供する必要があります]] 2021-01-17 20:32:51.791 DEBUG 20412 --- [nio-8080-exec-2] osweb.
検証エラーを処理するメソッドに入るようにする方法は?