我有一个带有经过验证的表单参数的控制器:
@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,绑定结果) 2021-01-17 20:32:51.789 调试 20412 --- [nio-8080-exec-2] .wsmmaServletInvocableHandlerMethod:无法解析公共 java.lang.String com.fiserv.report.generator 中的参数 [0]。 controller.ReportController.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] .w.s.m.s.DefaulthandlerExceptionResolver :已解决 [org.springframework.validation.BindException: org.springframework.BindingResult:Property 错误 字段“输入”上的对象“homeFormInput”中的字段错误:拒绝值 [];代码 [NotEmpty.homeFormInput.input,input];参数 [];默认消息[输入]];默认消息 [您必须至少提供一个测试计划 ID]] 2021-01-17 20:32:51.791 调试 20412 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet:完成 400 BAD_REQUEST 2021-01-17 20:32:51.792 调试 20412 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost]:处理 ErrorPage[errorCode=0,location=/error] 2021-01-17 20:32:51.796 调试 20412 --- [nio-8080-exec-2] osweb.servlet.DispatcherServlet:POST“/error”的“错误”调度,参数={masked}
如何让它进入处理验证错误的方法?