0

我的应用程序始终使用提交名称作为操作名称。到目前为止它已经奏效了。

输入多部分表格...

html

<form:form modelAttribute="screenObject" enctype="multipart/form-data">
<input name="save"  value="Save" type="submit" />

控制器

public static final String ACTION_SAVE="save";
@RequestMapping(method=RequestMethod.POST, params=ACTION_SAVE)
public ModelAndView save(@ModelAttribute("screenObject") FileHeaderEditScreenObject screenObject, BindingResult bindingResult, Model model, Locale locale) {

错误

message Request method 'POST' not supported

如果我删除enctype="multipart/form-data",控制将直接流入该save方法。我确实需要对这个多部分表单执行不同的操作。我想保持一致,所以我希望我不必引入任何隐藏字段来表示操作或将表单提交到不同的 url...

4

1 回答 1

0

我建议params=ACTION_SAVE从注释中删除。看起来它没有解析来自多部分请求的提交操作。

您可以将该参数作为请求参数处理:

@RequestMapping(method=RequestMethod.POST, params=ACTION_SAVE)
public ModelAndView save(
   @RequestParam(value = "submit", required = true) String action,
   @ModelAttribute("screenObject") ....

{
     switch (action) {
        case "action1": ...
        case "action2": ...
     }
}

这不是很好。我会像这样使用不同的 URL:

@RequestMapping("/action1"})
    public void action1(

@RequestMapping("/action2"})
    public void action2(
于 2012-04-14T03:32:39.717 回答