我正在努力完成以下任务:
我有一个水果列表,存储在一个包含两列“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>
答案 0 :(得分:0)
您的重定向只是转到该新网址而不添加任何请求参数。因此,您的水果ID被丢弃,这就是为什么没有显示的原因。
重定向似乎毫无意义 - 为什么不返回与GET版本相同的视图名称字符串呢?
要使用参数重定向,请尝试:
return "redirect:/modifyfruit?id=" + id;
编辑:刚刚注意到你已将Fruit添加到模型中 - 这不会在重定向中传输,也无法正常工作。