使用弹簧窗体编辑对象属性



我对如何使用Spring Forms编辑对象有点困惑,例如:假设我有一个对象Person,他有很多属性,因为我从dao那里获得它,而我只想提供字段"street"进行编辑,我会在我的PeopleController中拥有这个:

@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>

那么,当我发布表单时,是否会保留 Person 对象的其他属性?例如人的姓名、姓氏、用户名、年龄等。否则,如何做到这一点?

将模型对象存储在会话中,如下所示:

@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
  }
}

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

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

最新更新