Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带hibernate验证的Spring MVC不起作用_Java_Spring_Validation_Spring Mvc_Hibernate Validator - Fatal编程技术网

Java 带hibernate验证的Spring MVC不起作用

Java 带hibernate验证的Spring MVC不起作用,java,spring,validation,spring-mvc,hibernate-validator,Java,Spring,Validation,Spring Mvc,Hibernate Validator,我对Spring的hibernate验证有一些问题。我做了在线教程中解释的一切,但它不起作用,我只是进入下一页,没有验证错误 import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; public class Customer { private String firstName; @NotNull() @Size(min=1, message = "this field m

我对Spring的hibernate验证有一些问题。我做了在线教程中解释的一切,但它不起作用,我只是进入下一页,没有验证错误

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";
}
customer-form.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中没有错误。我做错了什么?

将setter添加到客户类中。 如果没有setter,则不会填充类。

如果类路径中不存在hibernate验证程序,则在类路径中添加它。如果您正在使用任何构建工具,如gradle或maven,只需将hibernate验证器添加到依赖项中即可

例如:

格拉德尔:

马文:

注:基于IntelliJ IDEA的解决方案

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

不管通过project Structure>Libraries手动将库文件包括在项目中并由IDE编制索引,这些库文件都不会自动包含在构建过程的编译输出中

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

从左窗格转到文件>项目结构>工件 展开“输出布局”选项卡下的WEB-INF/lib目录 通过单击+按钮并选择库文件,高亮显示lib目录并添加相应的Hibernate工件 从项目库中选择库后,选择“确定”、“应用”,即可开始 现在,当您重建解决方案并运行服务器时,组装的输出构建将包含所有额外添加的构件库,如Hibernate验证

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


与使用Gradle或Maven编译和构建此类Java项目相比,这是强制性的,在这些项目中,使用自己的底层构建过程并运行特定的任务来生成基于build.Gradle或pom.xml配置的输出,其中包含所有配置值和依赖项。

您是在执行HTTP GET还是POST?这是一个简单的过程POST方法是否调用了控制器方法processForm?如果执行HTTP post,则应使用@RequestMappingvalue=/processForm,method=RequestMethod.POSTbtw:@NotNull@Sizemin=1,message=此字段不能为空,可以替换为@NotEmptyyes,我正在使用intellij,在调试模式下可以检查它。我已经添加了method=RequestMethod.POST,但我认为如果没有指定,该方法将适用于所有类型的消息?
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>