【发布时间】:2016-09-28 15:46:17
【问题描述】:
我正在实现一个带有表单验证的示例 Spring MVC 表单。我有一个复杂类型 Address 作为 Student 表单 bean 的 bean 属性。我已经为Address bean 属性添加了表单验证@NotEmpty。但同样没有反映在 UI 中。但表单验证适用于 Student 表单 bean 的其他原始类型。
因此,验证对于Student 表单bean 非常有效,但不适用于Address 等Student 表单bean 中的嵌套复杂类型。
我正在尝试了解原因和解决方法。
春季版 4.0+。 休眠验证器 api:5.2.4
StudentPOJO:
package com.xyz.form.beans;
import java.util.Date;
import java.util.List;
import javax.validation.constraints.Past;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;
import com.xyz.validators.DateNotEmpty;
import com.xyz.validators.ListNotEmpty;
public class Student {
@Size(min = 2, max = 30)
private String firstName;
@Size(min = 2, max = 30)
private String lastName;
@NotEmpty
private String gender;
@DateNotEmpty
@Past
private Date DOB;
private String email;
private String mobileNumber;
@ListNotEmpty
private List<String> courses;
private Address address;
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getDOB() {
return DOB;
}
public void setDOB(Date dOB) {
DOB = dOB;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobileNumber() {
return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}
public List<String> getCourses() {
return courses;
}
public void setCourses(List<String> courses) {
this.courses = courses;
}
}
AddressPOJO:
Student控制器:
谢谢, 维斯瓦纳特
【问题讨论】:
-
你很高兴不包括相关的类......将它们添加到你的问题中。
-
请找到添加的代码。让知道您是否有解决方案。提前致谢。
-
嵌套对象需要
@Valid注释,如 JSR-303 规范中所述。所以把@Valid放在Student的Address字段上。 -
完美运行。非常感谢。
标签: java spring forms validation spring-mvc