【发布时间】:2012-09-15 16:07:33
【问题描述】:
我正在努力将我的 JSP 中更改的列表值返回给 MVC 控制器。这些值显示得很好,但是在提交表单时更改不会显示在 ModelAttribute 中(任何更改的非列表值都会在提交时显示)。以下是相关代码的缩略版:
JSP:
<c:forEach items="${poForm.poDetail}" varStatus="i">
...
<!-- Product Description -->
<td class="leftAlign" >
<form:input path="poDetail[${i.index}].description" />
</td>
支持表格:
public class POForm {
private List<PurchaseOrderDetail> poDetail;
...
}
采购订单详情:
public class PurchaseOrderDetail implements Comparable<PurchaseOrderDetail>{
private String partNumber; // alpha-numeric part number (vendor's)
private String description; // Product name/description
... remaining properties are non-complex
}
控制器:
@RequestMapping(value="/savePO",method=RequestMethod.POST)
public ModelAndView savePO(@ModelAttribute("poForm") POForm poForm, final
HttpServletRequest request) {
.... "examine the poForm here and items of poDetail are unchanged"
}
有什么建议可以试试??
【问题讨论】:
-
你有 poDetail 和 description 属性的 setter 和 getter 吗?
-
是的。我没有将它们包含在代码中以使其更简单。
-
你在这个控制器中有没有其他 @ModelAttribute 注释的方法 - 它必须从某个地方检索旧值
-
首先尝试使用FireBug之类的工具检查更新的详细信息是否传输到服务器。这将有助于决定在哪里找到问题(jsp 或控制器)
-
谢谢,我不知道我可以在 FireBug 中做到这一点。确实,这暴露了问题。我在提交的页面上有另一个表单,而不是我想要的表单(长话短说,JQuery 新手)。一旦我纠正了这一点,列表中的更改值就会按预期出现。我会给你答案,但你下面的答案不是我想要的。来一句“非常感谢”怎么样?
标签: spring model-view-controller list