0

私は次のことを達成しようとしています:

「id」、「name」、「color」の 2 つの列を持つテーブルに格納されている果物のリストがあります。各フルーツの横に「変更」ボタンがあります。ここでやりたいことは、果物をフォームに表示し、「名前」と「色」の属性を変更できるようにすることです。

理由はわかりませんが、「変更」ボタンをクリックすると、フォームは表示されますが、クリックした果物のプロパティは表示されません。

コードは次のとおりです。

コントローラ:

@RequestMapping(value = "/fruit/modify", method = RequestMethod.POST)
    public String modifyFruit( @RequestParam("id") int id, ModelMap model) {
        Fruit fruit = fruitManager.getFruitById(id);
        model.addAttribute("fruit", fruit);
        return "redirect:/modifyfruit";
    }

    @RequestMapping(value = "/modifyfruit", method = RequestMethod.GET)
    public String showAddForm(@ModelAttribute("fruit") Fruit fruit, ModelMap model) {
        model.addAttribute("fruit", fruit);
        return "/secure/modifyfruit";
    }

リスト内の各果物の横に表示している変更ボタンを次に示します。

<td>
    <c:url var="modifyUrl" value="/fruit/modify.html"/>    
    <form id="${fruitForm}" action="${modifyUrl}" method="POST">
        <input id="id" name="id" type="hidden" value="${fruit.id}"/>
        <input type="submit" value="modify"/>
    </form>
</td>

これは、入力したいフォームを表示するために使用しているmodifyfruit.jspです。

<body>
    <form:form method="post" commandName="fruit">
        <table width="95%" bgcolor="f8f8ff" border="0" cellspacing="0"
            cellpadding="5">
            <tr>
                <td align="right">Name:</td>
                <td><form:input path="title" value="${fruit.name}"/></td>   
            </tr>
<tr>
                <td align="right">Color:</td>
                <td><form:input path="color" value="${fruit.color}"/></td>
            </tr>
        </table>
        <br>
        <input type="submit" align="center" value="Post Ad">
    </form:form>

</body>
4

1 に答える 1

0

リダイレクトは、リクエスト パラメータが追加されることなく、単純にその新しい URL に移動します。したがって、フルーツ ID が破棄されているため、何も表示されません。

リダイレクトは無意味に思えます - 代わりに GET バージョンと同じビュー名文字列を返さないのはなぜですか?

パラメータでリダイレクトするには、次を試してください。

return "redirect:/modifyfruit?id=" + id;

編集: フルーツをモデルに追加したことに気付きました - これはリダイレクトで転送されず、とにかく動作しません。

于 2012-10-29T03:35:01.517 に答える