我在使用Spring进行hibernate验证时遇到了一些问题。我按照在线教程中的说明完成了所有操作,但它不起作用,我只是转到下一页而没有验证错误。
header('Location: /logout');
控制器:
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;
客户form.jsp
@RequestMapping("/processForm")
public String processForm(@ModelAttribute("customer") @Valid Customer
customer, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "customer-form";
}
return "customer-confirmation";
}
因此,当我为lastName设置一个空字段时,BindingResult中没有错误。我做错了什么?
答案 0 :(得分:2)
在您的类路径中添加hibernate-validator
(如果尚不存在)。如果您正在使用gradle
或maven
之类的任何构建工具,只需将hibernate-validator
添加到依赖项即可。
例如:
成绩:
compile group: 'org.hibernate.validator', name: 'hibernate-validator', version: '6.0.13.Final'
Maven:
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
答案 1 :(得分:1)
注意:基于IntelliJ IDEA IDE的解决方案
如果不使用Gradle或Maven等构建工具,则可能与IDE在手动添加库(项目依赖项)的解决方案的编译和构建过程中的行为有关。
无论库文件是手动包含在项目中,还是由IDE通过通过“项目结构”>“库” 手动添加来对其进行索引,这些都不会被自动包含在构建过程的编译输出中。
为了确保您所包含的库与Spring MVC解决方案一起组装,请执行以下操作:
现在,当您重建解决方案并运行服务器时,组装的输出(内部版本)将包含所有其他添加的工件(库),例如Hibernate验证。
在使用IntelliJ IDEA的生成器编译基于Java的项目时,它使用其自己的项目模型,配置和内置机制来组装输出应用程序,因此需要执行上述步骤。
在这里这是强制性的,与使用Gradle或Maven编译和构建这样的Java项目相反,在Java项目中,它们使用自己的基础构建过程并运行特定任务以基于build.gradle或pom.xml配置保存所有内容。配置值和依赖项。
答案 2 :(得分:-1)
将setter添加到Customer
课程。
没有setter,你的班级就不会被填充。