2

次の要件があります。次のようにモデルオブジェクトをビューに送信します...

@RequestMapping(value ="/addItem", method = RequestMethod.GET)
     public ModelAndView showContacts() {           
         ModelAndView modelAndView = new ModelAndView("addItem", "command", new Item());
         return modelAndView;
     }

しかし、ポストでは、返された「アイテム」オブジェクト (モデル) とは別に値を取得する必要があります。この変数は Item モデル オブジェクトに属していないため、その一部にすることはできません。しかし、その値に基づいて行動するには、それを返す必要があります。どうすればこれを行うことができますか?

つまり、私のJSPファイルには、次のフィールドがあります...

<form:input type="text" path="val1"/>
<form:input type="text" path="val2"/>
<form:input type="text" path="val3"/>

上記のうち、フィールド val1 と val2 だけが Item オブジェクトへのマッピングを持っていますが、val3 はそうではありません。それにもかかわらず、val3 の値もコントローラーに戻す必要があります。POST を処理するために現在持っているコードは次のとおりですが、val3 の値を取得する方法がわかりません。val3 の Item クラスにフィールドまたは適切な getter メソッドがないことが示されているため、コードは現在コンパイルされません。

@RequestMapping(value = "/postItem", method = RequestMethod.POST)
    public String postItem(@ModelAttribute("item") Item item , BindingResult result) {
        logger.info("Post Item:");
        return "home";
    }

私の要件に合わせて上記のコードを変更するにはどうすればよいですか?

この問題に関するいくつかのガイダンスは高く評価されます。

4

1 に答える 1

1

マップをモデルとして渡し、そこにさまざまなものを含めることができます。単一のドメイン オブジェクトに限定されるわけではありません。そのコンストラクターは便宜上存在するものであり、それが唯一の方法ではありません。コンストラクターのバリエーションがあります。

public ModelAndView(Object view,
                    Map model)

    Create a new ModelAndView given a View object and a model.

    Parameters:
        view - View object to render (usually a Servlet MVC View object)
        model - Map of model names (Strings) to model objects (Objects). 
        Model entries may not be null, but the model Map may be null if 
        there is no model data.
于 2012-06-22T17:19:26.877 に答える