我的 AccountController 中有一个方法,例如
@RequestMapping(method = { RequestMethod.POST, RequestMethod.PUT })
public String update(@ModelAttribute Account account) {
this.getAccountDao().save(account);
return "redirect:/users/account/";
}
我正在使用 org.springframework.web.filter.HiddenHttpMethodFilter ,所以我的视图有一个隐藏的表单字段 -
<form:form method="POST" modelAttribute="account">
<input type="hidden" name="_method" value="PUT" />
....
现在我的问题是控制器如何知道何时创建新帐户或更新它,或者它如何知道请求是 POST 还是 PUT?对我来说,它看起来总是会被放置。
我只是不喜欢使用除 GET 和 POST 之外的任何东西。控制器不需要关心它是否需要创建一个新的或更新它。如果表单具有隐藏的帐户 ID 字段,则服务可以确定要调用的 DAO 方法。
编辑 如果这只是一个 PUT 请求,那么我需要为 POST 创建一个新的 jsp。不幸的是,这两个请求非常相似,因为它们需要提交几乎准确的数据,除了帐户 ID。我希望能够从控制器使用相同的方法,并为 POST 和 PUT 使用相同的 jsp,并且取决于模型 - 帐户被保存或更新。