我在列表中查看我列表中的对象。我希望能够使用表格中的按钮编辑对象。将循环变量从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