Spring MVC - вопрос привязки объекта команды - PullRequest
1 голос
/ 18 октября 2010

Я использую объект домена в качестве объекта команды в веб-слое.В одном случае этот объект команды поддерживает форму, представляющую частичное обновление объекта домена.

@RequestMapping( value = "/club/edit", method = RequestMethod.GET )
public String setupEditClubForm( ModelMap model, @RequestParam( "clubId" ) Long clubId ) {
    Club club = clubService.findClubById( clubId );
    model.addAttribute( "club", club );
    model.addAttribute( "action", "edit" );
    return "clubForm";
}

@RequestMapping( value = "/club/edit", method = RequestMethod.POST )
public String processEditClubForm( ClubEntity club, BindingResult result ) {
    if ( result.hasErrors() ) {
        return "clubForm";
    }
    clubService.updateClub( club );
    return "redirect:/club/" + club.getId();
}

Моя проблема состоит в том, что у объекта домена есть некоторые поля, которые не изменяются при отправке этой формы.Эти поля, у которых нет соответствующих параметров запроса, становятся нулевыми, мне нужно, чтобы они оставались такими, как есть.

Я думаю, что это можно исправить, поместив объект в сеанс (через @SessionAttributes), чтобыон должен жить между двумя запросами, но он не работает.

Я посмотрел в справочнике Spring, но не смог найти никакой информации о том, как Spring манипулирует объектами команд.

1 Ответ

2 голосов
/ 18 октября 2010

Ну, проблема была проста - я фактически создавал новый объект команды в методе processEditClubForm. Вот правильный код метода:

@RequestMapping( value = "/club/edit", method = RequestMethod.POST )
public String processEditClubForm( @ModelAttribute Club club, BindingResult result ) {
    if ( result.hasErrors() ) {
        return "clubForm";
    }
    clubService.updateClub( club );
    return "redirect:/club/" + club.getId();
}

Спасибо Дэниелу за то, что он заставил меня увидеть это: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...