繁体   English   中英

带有休眠验证的 Spring MVC 不起作用

[英]Spring MVC with hibernate validation doesn't work

我在使用 Spring 进行休眠验证时遇到了一些问题。 我按照在线教程中的说明做了所有事情,但它不起作用,我只是转到下一页而没有验证错误。

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class Customer {

private String firstName;

@NotNull()
@Size(min=1, message = "this field must not to be empty")
private String lastName;

控制器:

@RequestMapping("/processForm")
public String processForm(@ModelAttribute("customer") @Valid Customer 
                          customer, BindingResult bindingResult) {
    if(bindingResult.hasErrors()) {
        return "customer-form";
    }
    return "customer-confirmation";
}

客户表单.jsp

<form:form action="processForm.form" modelAttribute="customer">
    First name: <form:input path="firstName"/>
    <br>
    Last name (*): <form:input path="lastName"/>
    <form:errors path="lastName" cssClass="error"/>
    <input type="submit" value="Submit"/>
</form:form>

因此,当 lastName 为空字段时,BindingResult 中没有错误。 我做错了什么?

如果hibernate-validator尚不存在,请在您的类路径中添加它。 如果您使用任何构建工具,如gradlemaven只需将hibernate-validator添加到依赖项。

例如:

摇篮:

compile group: 'org.hibernate.validator', name: 'hibernate-validator', version: '6.0.13.Final'

马文:

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.13.Final</version>
</dependency>

注:基于IntelliJ IDEA IDE的解决方案

如果不使用 Gradle 或 Maven 等构建工具,这可能与手动添加库(项目依赖项)时在编译和构建解决方案期间 IDE 的行为有关。

无论将库文件手动包含在项目中并由 IDE 通过“项目结构”>“库”手动添加这些文件进行索引,这些文件都不会自动包含在构建过程的编译输出中。

为了确保您包含的库与 Spring MVC 解决方案组合在一起,请执行以下操作:

  • 转到文件 > 项目结构 > 工件(从左窗格中)

在此处输入图片说明

  • 展开输出布局选项卡下的 WEB-INF/lib 目录

在此处输入图片说明

  • 通过单击 + 按钮并选择库文件,突出显示 lib 目录并添加相应的 Hibernate 工件

在此处输入图片说明

  • 从项目库中选择库后,选择确定,应用,您就可以开始了

在此处输入图片说明

现在,当您重新构建解决方案并运行服务器时,您的组装输出(构建)将包含所有额外添加的工件(库),例如 Hibernate 验证。

使用IntelliJ IDEA的builder编译基于Java的项目时,它使用自己的项目模型、配置和内置机制来组装输出应用程序,所以需要像我提到的这些步骤。

与使用 Gradle 或 Maven 编译和构建此类 Java 项目相反,这些项目使用自己的底层构建过程并运行特定任务以根据包含所有配置值的 build.gradle 或 pom.xml 配置生成输出和依赖。

将 setter 添加到您的Customer类。
没有二传手,你的班级不会被填充。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM