使用Spring Forms编辑对象属性

问题描述:

对于如何使用Spring Forms编辑对象,我有点困惑,例如:假设我有一个对象谁拥有很多属性,因为我从道路获取它,我只是想为编辑领域的“街道”,我会这在我把PeopleController使用Spring Forms编辑对象属性

@RequestMapping("editPerson") 
public void editPerson (Model model) { 
    Person person = dao.getThatPerson(); 
    model.addAttribute (person); 
} 

在我查看文件我就什么都没有,但这样的:

<form:form method="post" action="" commandName="person"> 
    <form:input path="street" /> 
    <input type="submit" value="Edit!" /> 
</form:form> 

那么当我的形式,将保存对象的其他属性?比如人名,姓氏,用户名,年龄等。否则,这怎么可能完成?

+0

实现此功能时,因为在某些情况下,你可以在应用程序的安全加上孔要当心。请参阅http://www.infoq.com/news/2008/07/spring-mvc-advisory和http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/validation/DataBinder .html(尤其是关于'setAllowedFields()'/'setDisallowedFields()'方法) – 2011-05-19 08:36:34

存储在会话模型对象,就像这样:

@Controller 
@SessionAttributes("person") 
public class YourController { 
... 
    @ModelAttribute("person") 
    public Person getPerson() { 
     return new Person(); 
    } 

    @RequestMapping("editPerson") 
    public void editPerson (@ModelAttribute("person") Person person) { 
    person = dao.getThatPerson(); 
    } 

    @RequestMapping(value="postperson", method = RequestMethod.POST) 
    public void postPerson(@ModelAttribute("person") Person person) { 
    // do stuff with person 
    } 
} 

你可能是最好的只是把人的身份证和街道放在模型中,而不是整个人。当用户提交时,只需更新街道;

1 - 在您的DAO中提供一个updateStreet(String street, int personID)方法。
2 - 从DAO中获取人,设置街道,然后坚持新人。