проверка вложенной модели Spring MVC
У меня есть две модели: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;
//getter/setter omitted
}
public class User{
private int id;
private String name;
//omit other properties and getter/setter
}
Теперь, когда я создаю новый проект, я отправлю следующие параметры в ProjectController:
projects?name=jhon&manager.id=1&operator.id=2...
Затем я создам новый объект Project и вставлю его в базу данных.
Тем не менее, я должен подтвердить идентификатор менеджера, и оператор действителен, что 's, чтобы сказать, я проверю это, если есть совпадающий идентификатор в пользовательской таблице.
Итак, я хочу знать, как реализовать этот вид проверки?
update1: использование валидатора
Это форма для создания нового проекта:
Manager: <br>
Operator: <br>
Name: <br>
@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!");
}
}
Похоже, этот валидатор работает.
Однако сообщение об ошибке не может быть отображено в форме.
Затем, несмотря на отладку, я проверяю объект результата и нахожу это:
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]
Кажется, что результат имеет ошибки, но этопутьproject.id
в то время как в моей форме этоproject.manager.id
Как исправить?