@Valid @ModelAttribute 无法正常工作
Posted
技术标签:
【中文标题】@Valid @ModelAttribute 无法正常工作【英文标题】:@Valid @ModelAttribute not working properly 【发布时间】:2020-09-15 16:02:44 【问题描述】:我有这个控制器
@Controller
public class EmpleadoController
@Autowired
private EmpleadoService servicio;
@PostMapping("/empleado/new/submit")
public String nuevoEmpleadoSubmit(@Valid @ModelAttribute("empleadoForm") Empleado empleadoForm, BindingResult bindingResult)
if(bindingResult.hasErrors())
return "formulario";
else
servicio.add(empleadoForm);
return "redirect:/empleado/list";
有了这个模型
package com.alexotero.spring.model;
import javax.validation.constraints.Email;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
public class Empleado
@Min(0)
private long id;
@NotEmpty
private String nombre;
@Email
private String email;
private String telefono;
//Constructors getters setters and stuff
我还在 pom.xml 中添加了这个依赖项
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
无论我在表单中介绍什么,控制器都不会检测到任何错误。始终将对象添加到列表(在服务中)并重定向到 list.html。我找不到问题出在哪里。
【问题讨论】:
只添加 api 不会做任何事情。您还需要像hibernate-validator
这样的实现。而不是添加 validation-api
使用 spring-boot-starter-validation
,其中包括 api 和实现。
您能否提供您尝试发送的正文以进行测试?
非常感谢!不知道执行情况。它奏效了。
【参考方案1】:
就我而言,我删除了这个依赖项
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
并添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
我认为它们相互冲突。
【讨论】:
以上是关于@Valid @ModelAttribute 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
@Valid springMVC bean校验不起作用及如何统一处理校验