0

Spring3がExpressionLanguageを使用してjspでモデルをレンダリングしないことに少しがっかりしました。その理由がわからないことを認めなければなりません。なぜ私がそれを機能させることができないのかを誰かが理解するのを手伝ってくれるなら、それは本当に素晴らしいでしょう。

これが私のコンテキストです:

私のコントローラーには、jspフラグメントを返すメソッド(クライアントからajaxによって呼び出されます)があります。

@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST)
public String getGoatCard(@RequestParam Long id,
        @ModelAttribute("goat") Goat goat) {
    goat = goatDataService.findGoatById(id);
    return "goatCard";
}

このメソッドをrequestParamで呼び出して、hibernateが目的のBeanを取得できるようにします(モデルには必要なすべてのデータが含まれており、チェックされています)。

次に、このメソッドは「goatCard」という名前のjspを再実行します。これがjspコードです:

<input name="goat.goatName" type="hidden" value="${goat.goatName}"/>

(これはページコード全体ではありません。表示されるコードが多すぎると読みにくくなります。私のjspにはJQueryeasyuiとhighchartsjavaScriptライブラリが含まれています)

アノテーション@ModelAttribute( "goat")が "goat"というモデルを私のjspにリンクし、ELを使用してモデルをレンダリングできるようにしたとは思いますが、そうではないようです。

誰かが何か考えを持っていますか、おそらく私が間違ったことはほんの少しのことですが、どれがわかりません!!!!

4

2 に答える 2

0

@ModelAttributeは、JSPに表示されるように設定するのではなく、フォームモデルを取得するために使用されます。JSPでデータを表示する必要がある場合は、最初にデータをモデルに追加する必要があります。

@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST)
public ModelAndView getGoatCard(@RequestParam Long id) {
    ModelAndView mv = new ModelAndView("goatCard");
    Goat goat = goatDataService.findGoatById(id);
    mv.addObject("goat",goat);
    return mv;
}

そして、ヤギはJSPファイルで利用できます。ちなみに、データを取得するには、RequestMethod.GETを使用することをお勧めします。

于 2013-03-11T10:08:02.383 に答える
0

どうもありがとうございました。コードを更新するための単なる答え。私はSpring3を使用しているので、次のように書く方がよいでしょう。

@RequestMapping(value = "/datagrid/getGoatCard", method = RequestMethod.POST)
public String getGoatCard(@RequestParam Long id,
        Model model) {
    model.addAttribute("goat", goatDataService.findGoatById(id));
    return "goatCard";
}

これは、Spring Foundationの事前調整にさらに適合するためです(これが同じ結果につながることに同意しますが、SpringSourceはmavの代わりにString returnの使用を推奨しています)。

もう一度あなたの助けに感謝します

于 2013-03-12T11:52:21.033 に答える