我在列表中查看我列表中的對象。我希望能夠使用表格中的按鈕編輯對象。將循環變量從Freemarker模板傳遞到Spring控制器
<#list products as product>
<tr>
<td>${product.productName}</td>
<td>${product.price}</td>
<td>${product.quantity}</td>
<td>
<form name="product" method="post" action="/product/edit">
<input type="submit" name="submit" value="Edit this product"/>
</form>
</td>
</tr>
</#list>
目的然後應傳遞給控制器方法:
@RequestMapping(value="/edit", method = RequestMethod.POST)
public ModelAndView edit(@ModelAttribute("product") Product product){
ModelAndView mav = new ModelAndView("product/edit");
mav.addObject("product", product);
return mav;
}
然而,由edit
方法獲得的product
爲空。我該如何解決?我試圖使用下面的代碼綁定產品內部的形式,但那也不起作用。
<form name="product" method="post" action="/product/edit">
<@spring.bind "product" />
<input type="hidden" name="${spring.status.expression}" value="${spring.status.value}"/>
<input type="submit" name="submit" value="Edit this product"/>
</form>
我想使用POST方法。
謝謝你的回答。您是正確的,該產品只是爲進一步編輯選擇。產品存儲在數據庫中並作爲列表返回。當然,產品有一個ID。我只是想避免通過id從數據庫獲取產品,因爲它已經在列表中,並且沒有真正需要再次調用服務層。 明天我會測試你的解決方案。謝謝。 – RK1
我明白了!我瞭解你的動機。但不幸的是,對象列表必須在某個地方「存活」請求響應圈。這是在會話中還是在數據庫中。渲染你的Freemaker模板後,只是HTML。剩下的就是文字。因此,沒有辦法進行選擇並返回客戶端對象,因爲它們根本就不在那裏。沒有辦法使用服務層,即使是在異步請求中。 – MyBrainHurts
當然,這是有道理的。 「剩下的就是文字」,完美地總結了它。謝謝! – RK1