2012-10-28 54 views
0

我試圖完成下列顯示形式的記錄:如何修改視圖

我有水果,存儲在一個表中有兩列「ID」的列表,「名」和「顏色」。 在每個水果旁邊,我有一個「修改」按鈕。我想在這裏做的是能夠在窗體中顯示水果並能夠修改「名稱」和「顏色」屬性。

我不明白爲什麼,但是當我點擊「修改」按鈕時,表單正在顯示,但我點擊的水果的屬性不是。

下面是代碼:

控制器:

@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

也許是因爲您使用的是重定向? – chrislhardin

回答

0

您的重定向只是簡單地轉到那個沒有添加任何請求參數的新URL。因此,你的水果ID被丟棄,這就是爲什麼沒有顯示。

重定向似乎毫無意義 - 爲什麼不返回與GET版本相同的視圖名稱字符串?

爲了與PARAMS重定向,請嘗試:

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

編輯:剛纔注意到您所添加的水果到模型 - 這是不能爲重定向轉移,不會反正工作。