Spring将多个属性绑定到同一个@ModelAttribute

时间:2016-02-15 12:33:50

标签: spring modelattribute

我有一个预览页面,可以添加或编辑模型并显示预览。

@RequestMapping(value = "/preview", method = RequestMethod.POST)
    public ModelAndView preview(@ModelAttribute("editForm") FormModel editFormModel) {
        //action
    } 

@RequestMapping(value = "/preview", method = RequestMethod.POST)
    public ModelAndView preview(@ModelAttribute("addForm") FormModel addFormModel) {
        //action
    } 

我需要从添加表单页面调用预览并编辑表单页面。我要通过的模型是相同的,但来自不同的形式。

(1)ModelAttribute是否支持这种多属性名称映射? (2)我如何考虑重新设计?考虑(a)在表单提交之前重命名表单名称/属性以使用相同的属性名称。 (b)完全删除ModelAttribute - 我不能选择使用spring mvc form binding。

注意:我使用editForm / addForm作为会话属性。

1 个答案:

答案 0 :(得分:0)

实际上不是解决方案,而是解决问题。

方法1:

@RequestMapping(value = "/preview", method = RequestMethod.PUT)
public ModelAndView preview(@ModelAttribute("editForm") FormModel editFormModel) {
    //action
} 

@RequestMapping(value = "/preview", method = RequestMethod.POST)
public ModelAndView preview(@ModelAttribute("addForm") FormModel addFormModel) {
    //action
} 

方法2:

@RequestMapping(value = "/editpreview", method = RequestMethod.PUT)
public ModelAndView preview(@ModelAttribute("editForm") FormModel editFormModel) {
    //action
} 

@RequestMapping(value = "/addpreview", method = RequestMethod.POST)
public ModelAndView preview(@ModelAttribute("addForm") FormModel addFormModel) {
    //action
}