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 に答える