Spring Boot thymeleaf 验证不起作用
Posted
技术标签:
【中文标题】Spring Boot thymeleaf 验证不起作用【英文标题】:Spring boot thymeleaf validation not working 【发布时间】:2020-11-05 09:10:44 【问题描述】:你好,我在 sping boot MVC 中引入了 thymeleaf
我看了很多例子,但我找不到为什么不能正常工作。
我正在尝试使用“nombre”和“direction”两个字段进行表单验证,但它始终验证模型是否正确,并重定向到“mensajeView”。
我尝试在@Valid 之后添加@RequestBody,但没有成功。
我的模特:
@Entity
public class Almacen
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "idAlmacen", updatable = false, nullable = false)
private int idAlmacen;
@NotEmpty(message = "La clave no puede estar en blanco")
private String nombre;
@NotEmpty(message = "Error")
private String direccion;
public int getIdAlmacen()
return idAlmacen;
public void setIdAlmacen(int idAlmacen)
this.idAlmacen = idAlmacen;
public String getNombre()
return nombre;
public void setNombre(String nombre)
this.nombre = nombre;
public String getDireccion()
return direccion;
public void setDireccion(String direccion)
this.direccion = direccion;
我的控制器
@PostMapping("/crearAlmacen")
public String crearAlmacenPost(@Valid Almacen almacen, BindingResult result, Model model)
if (result.hasErrors())
return "crearAlmacen";
else
model.addAttribute("mensaje","Operacion completada con exito");
return "mensajeView";
我的看法:
<form action="#" th:object="$almacen" th:action="@/crearAlmacen" method="post">
<div class="container">
<div class="row justify-content-center align-items-center minh-100">
<div class="col-lg-4">
<h2>Nuevo almacen</h2>
<div class="form-group">
<label for="nombre">Nombre</label>
<input id="nombre" th:field="*nombre" placeholder="Nombre" type="text" class="form-control">
<td th:if="$#fields.hasErrors('nombre')" th:errors="*nombre">Error</td>
</div>
<div class="form-group">
<label for="direccion">Dirección</label>
<input id="direccion" th:field="*direccion" placeholder="Direccion" type="text" class="form-control">
<td th:if="$#fields.hasErrors('direccion')" th:errors="*direccion">Error</td>
</div>
<button class="btn btn-success" type="submit">Guardar</button>
</div>
</div>
</div>
</form>
【问题讨论】:
尝试@Valid @ModelAttribute Almacen almacen
并将 @NotEmpty
注释更改为 @NotBlank
。
谢谢,但不起作用
【参考方案1】:
终于解决了。我正在从 javax.validation.constraints 导入 notempty 标签。我将其更改为 org.hibernate.validator.constraints 并且效果很好
【讨论】:
【参考方案2】:org.hibernate.validator.constraints 已弃用。我有同样的问题,我添加了依赖项。
<!-- add to work validation -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.2.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>6.0.2.Final</version>
</dependency>
<!-- end validation -->
【讨论】:
以上是关于Spring Boot thymeleaf 验证不起作用的主要内容,如果未能解决你的问题,请参考以下文章
thymeleaf + spring-boot 验证错误未显示在 html 上
@Valid 表单验证不适用于 Thymeleaf Spring Boot
在模态表单中使用 Spring Boot 和 thymeleaf 进行服务器端验证