I have two models: User,Project
public class Project{ private int id; @NotEmpty(message="Project Name can not be empty") private String name; private User manager; private User operator;
Now, when I create a new project, I will send the following parameters to ProjectController:
projects?name=jhon&manager.id=1&operator.id=2...
Then I will create a new project object and paste it into db.
However, I need to check the manager identifier, and the statement is valid to say that I will check this if there is a mapped identifier in the user table.
So, I want to know how to implement such validation?
update1: using validator
This is the form for creating a new project:
<sf:form method="${project.id==0?'post':'put'}" commandName="project" action="${context}${action}"> Manager:<sf:input path="manager.id" /> <sf:errors path="manager.id" /> <br /> Operator:<sf:input path="operator.id" /> <sf:errors path="operator.id" /> <br /> Name:<sf:input path="name" /> <sf:errors path="name" /> <br /> <input type="submit" value="Submit" /> </sf:form> @Override public void validate(Object obj, Errors errors) { User user = (User) obj; int id=user.getId(); User u=userDao.query(id); if(u==null){ errors.rejectValue("id", "user does not exist!"); } }
This validator seems to work.
However, the error message cannot be displayed on the form.
Then, although debug I check the result object, and I found this:
org.springframework.validation.BeanPropertyBindingResult: 2 errors Field error in object 'project' on field 'id': rejected value [0]; codes [user does not exist!.project.id,user does not exist!.id,user does not exist!.int,user does not exist!]; arguments []; default message [null] Field error in object 'project' on field 'id': rejected value [0]; codes [user does not exist!.project.id,user does not exist!.id,user does not exist!.int,user does not exist!]; arguments []; default message [null]
It seems that the result has errors, but its path is project.id , whereas in my form it is project.manager.id
How to fix?