0

我正在尝试完成以下任务:

我有一个水果列表,它们存储在一个包含两列“id”、“name”和“color”的表中。在每个水果旁边,我都有一个“修改”按钮。我在这里要做的是能够以表格形式显示水果并能够修改“名称”和“颜色”属性。

我不明白为什么,但是当我点击“修改”按钮时,表单正在显示,但我点击的水果的属性却没有。

这是代码:

控制器:

@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;

编辑:刚刚注意到您已将 Fruit 添加到模型中 - 这不会在重定向中转移并且无论如何都不会工作。

于 2012-10-29T03:35:01.517 回答