I have looked at other posting on this subject but couldn't get it to work. This seems to be a simple issue. I would appreciate if someone could help.
Person.java
@Entity
@Table(name = "PERSON")
public class Person {
@Id
@Column(name = "PERSON_ID")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
public Person() {
}
public Person(String fname, String lname) {
this.firstName = fname;
this.lastName = lname;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String first_name) {
this.firstName = first_name;
}
public String getLastName() {
return lastName;
}
public void setLastName(String last_name) {
this.lastName = last_name;
}
}
PersonController.java
@Controller
@RequestMapping("person")
public class PersonController {
@RequestMapping(value = "add", method = RequestMethod.POST)
public String addPerson(
@ModelAttribute("person") @Valid Person person, BindingResult result) {
log.info("in add");
personValidator.validate(person, result);
if (!result.hasErrors())
personService.addPerson(person);
return "redirect:/spring/person/list";
}
person.jsp
<body>
<form:form method="post" action="add.html" commandName="person">
<form:errors path="*" cssClass="errorblock" />
<table>
<tr>
<td><form:label path="firstName">First name</form:label></td>
<td><form:input path="firstName" /></td>
<td><form:errors path="*" cssClass="error" /></td>
</tr>
<tr>
<td><form:label path="lastName">Last name</form:label></td>
<td><form:input path="lastName" /></td>
<td><form:errors path="*" cssClass="error" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Add" /></td>
</tr>
</table>
</form:form>
</body>
</html>
PersonValidator.java
@Component
public class PersonValidator implements Validator {
public void validate(Object arg0, Errors arg1) {
Person person = (Person) arg0;
if (personService.findPersonByName(person.getFirstName(), person.getLastName()) != null)
arg1.rejectValue("firstName", "first name empty");
//arg1.reject("save.person", "User already exists.");
}
}
personService.findPersonByName is not null and result.hasErrors() is true, so I know the form has errors but they don't display for some reasons.
