Я хотел бы использовать магию автоматического подключения @ModelAttribute
для получения и передачи справочных данных.Проблема заключается в том, что все, что добавляется в модель с @ModelAttribute
, считается объектом поддержки формы, а затем связывается с запросом, потенциально изменяя объекты.
Я просто хочу, чтобы они были добавлены вмодель для ссылки на представление и возможность использования уровня параметра @ModelAttribute
для привязки объектов к методам, помеченным @RequestMapping
.Есть ли способ сделать это без какого-либо подробного @InitBinder
метода?
, например:
@ModelAttribute("owner")
public Person getOwner(@PathVariable("ownerId") Integer ownerId){
return getOwnerFromDatabaseById(ownerId);
}
@RequestMapping("/{ownerId}/addPet.do")
public ModelAndView addPet(HttpServletRequest request, @ModelAttribute("owner") Person owner){
String name = ServletRequestUtils.getStringParameter(request, "name");
Pet pet = new Pet();
pet.setName(name);
pet.setOwner(owner);
saveToDatabase(pet);
}
Тривиальный пример, когда домашнее животное добавляется к владельцу.Я хотел бы, чтобы владелец был помещен в модель для использования представлением, и я также хотел бы использовать автоматическое связывание параметра в addPet()
.Предположим, что и Pet
, и Person
имеют члена name
.В этом случае owner
будет автоматически привязан к запросу, установив для его name
имя питомца.Как этого можно избежать?