Trying to validate the data entered in my registration form.
Error Message: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.lang.String.
Model Class:
@Configuration
public class Student {
private int studentId;
@NotNull(message = "First name should not be empty")
@Size(min=03, max=20, message = "Minimum 3 to Maximum 20 characters are allowed")
@Pattern(regexp="/^[a-zA-Z]*$/")
private String firstName;
@NotNull(message = "Last name should not be empty")
@Size(min=03, max=20, message = "Minimum 3 to Maximum 20 characters are allowed")
@Pattern(regexp="/^[a-zA-Z]*$/")
private String lastName;
@NotNull(message = "Display name should not be empty")
@Pattern(regexp="^[A-Za-z0-9]*$", message = "Please enter a valid display name")
@Size(min=05, max=15, message="Minimum 3 to Maximum 15 characters are allowed")
private String displayName;
@NotNull(message = "Date of birth should not be empty")
@DateTimeFormat(pattern="yyyy/MM/dd/")
@Past (message="Only the past date is valid")
private String dateOfBirth;
@NotNull(message = "Email should not be empty")
@Email
private String email;
@NotNull(message = "Password should not be empty")
@Pattern.List({
@Pattern(regexp = "(?=.*[0-9])", message = "Password must contain one digit."),
@Pattern(regexp = "(?=.*[a-z])", message = "Password must contain one lowercase letter."),
@Pattern(regexp = "(?=.*[a-z])", message = "Password must contain one lowercase letter."),
@Pattern(regexp = "(?=\\S+$)", message = "Password must contain no whitespace.")
})
private String password;
@NotNull(message="Contact shouldnot be empty")
@Pattern(regexp = "[0-9]+", message="Contact should only contain numbers")
@Size(min=10, max=10)
private String contact;
@NotNull(message="Select atleast one skill from the list")
private List<String> studentSkills;
// Getter and Setter for studentId
public int getStudentId() {
return studentId;
}
public void setStudentId(int studentId) {
this.studentId = studentId;
}
// Getter and Setter for firstName
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
// Getter and Setter for lastName
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
// Getter and Setter for displayName
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
// Getter and Setter for DateOfBirth
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
// Getter and Setter for email
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// Getter and Setter for password
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
// Getter and Setter for contact
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
// Getter and Setter for studentSkills
public List<String> getStudentSkills() {
return studentSkills;
}
public void setStudentSkills(List<String> studentSkills) {
this.studentSkills = studentSkills;
}
}
Controller:
@RequestMapping(value="/registration", method=RequestMethod.GET)
public ModelAndView getRegForm() {
ModelAndView mv = new ModelAndView("registration","student",new Student());
return mv;
}
@RequestMapping(value="/submitregistrationform", method=RequestMethod.POST)
public ModelAndView submitRegForm(@Valid @ModelAttribute("student") Student student, BindingResult result) {
ModelAndView registrationView = new ModelAndView("registration");
if(result.hasErrors()) {
return registrationView;
} else {
st.insertOrUpdate(student);
ModelAndView mv = new ModelAndView("login");
return mv;
}
}
Any suggestions on how to sort the exception ? I tried length for String just to see if it works. But it didn't.
The validations given for date are incorrect. As the date is in String format and the annotation checks for DATE datatype it is throwing a exception. Changed the data type of date from String to DATE and it started working.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.