【发布时间】:2014-06-03 14:15:01
【问题描述】:
我们正在将 mvc 代码迁移到 Spring 4。之前我们有一个方法 formBackingObject,我们将其转换为获取方法 initForm。 但问题是 - 在扩展 SimpleFormController 的先前控制器中,formBackingObject 甚至在提交方法之前就被调用了。我们现在已经删除了 SimpleFormController。但是 initForm 在页面加载时只被调用一次。在提交之前不会调用它。还有一些创建用户对象和添加到 UserProfileForm 对象的自定义逻辑。
你有没有遇到过类似的问题。
旧代码
protected Object formBackingObject(HttpServletRequest request) throws Exception {
final UserProfileForm userProfileForm = new UserProfileForm();
final String id = request.getParameter("id");
if (id != null && !id.trim().equals("")) {
final User user = authenticationServices.findUser(ServletRequestUtils.getLongParameter(request, "id"));
userProfileForm.setUser(user);
} else {
final User user = new User();
userProfileForm.setUser(user);
}
return userProfileForm;
}
新代码
@RequestMapping(method = RequestMethod.GET)
public String initForm(HttpServletRequest request, ModelMap model) throws Exception{
final UserProfileForm userProfileForm = new UserProfileForm();
final String id = request.getParameter("id");
if (id != null && !id.trim().equals("")) {
final User user = authenticationServices.findUser(ServletRequestUtils.getLongParameter(request, "id"));
userProfileForm.setUser(user);
} else {
final User user = new User();
userProfileForm.setUser(user);
}
addToModel(request, model);
model.addAttribute("userProfileForm", userProfileForm);
return "user-management/user-profile";
}
【问题讨论】:
-
您可能应该考虑使用带有
@ModelAttribute注释的方法
标签: spring model-view-controller