我有一个带有经过验证的表单参数的控制器:
@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 调试 20412 --- [nio-8080-exec-2] swsmmaRequestMappingHandlerMapping:映射到 com.fiserv.report.generator.controller.ReportController#homeSubmit(HomeFormInput, Model, BindingResult) 2021- 01-17 20:32:51.789 调试 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]; 论据 []; 默认消息[输入]];默认消息 [您必须提供至少一个测试计划 ID] 2021-01-17 20:32:51.791 WARN 20412 --- [nio-8080-exec-2] .wsmsDefaultHandlerExceptionResolver : 已解决 [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult:1 个错误字段“输入”上的对象“homeFormInput”中的字段错误:拒绝值 [];代码 [NotEmpty.homeFormInput.input,NotEmpty.input,NotEmpty.java.lang.String,NotEmpty]; 参数 [org.springframework.context.support.DefaultMessageSourceResolvable: 代码 [homeFormInput.input,input]; 论据 []; 默认消息[输入]];默认消息 [您必须提供至少一个测试计划 id]] 2021-01-17 20:32:51.791 DEBUG 20412 --- [nio-8080-exec-2] osweb。
如何让它进入处理验证错误的方法?