我正在使用域对象作为Web层中的命令对象。在一种情况下,此命令对象支持表示域对象的部分更新的表单。
@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如何操作命令对象的任何信息。
答案 0 :(得分:2)
嗯,问题很简单 - 我实际上是在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();
}
感谢Daniel让我看到它: - )