私は次のことを達成しようとしています:
「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>