【问题标题】:Spring boot thymeleaf validation not workingSpring Boot thymeleaf 验证不起作用
【发布时间】: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
  • 谢谢,但不起作用

标签: spring spring-boot validation model-view-controller thymeleaf


【解决方案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  -->
    

    【讨论】:

      猜你喜欢
      • 2020-11-22
      • 2021-05-08
      • 2017-07-14
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多