TransWikia.com

Spring boot thymeleaf validacion no funciona

Stack Overflow en español Asked by Jandako on November 13, 2021

Hola estoy introduciendome a spring boot MVC con thymeleaf.

He mirado como 20 ejemplos y no consigo dar con la tecla.

Estoy tratando de hacer una validacion de un formulario con los campos nombre y direccion pero siempre acepta el modelo como valido y reenvia a la vista mensajeView.

He probado añadiendo @RequestBody despues de @Valid y tampoco funciona.

Mi modelo:

@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;
}

}

Mi controlador

@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";
    }
}

Mi vista:

    <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>

One Answer

Tenía el mismo problema. Agrega esto al pom.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

Luego reinicia tu servidor local de spring boot. Funciona para mi. la solución la encontre aquí: https://stackoverflow.com/questions/48614773/spring-boot-validation-annotations-valid-and-notblank-not-working

Answered by Kener Avila on November 13, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP