我搜索了几个例子,还没有得到.我将GOOD对象的List从控制器传递到jsp页面.试图遍历列表对象,但它只重复显示一个元素.我应该用豆子吗?如果是的话,你能否为我的案例提供更具体的例子.
<c:if test="${not empty listGood}">
<c:forEach var="ob" varStatus="status" items="${listGood}">
<tr>
<td><c:out value="${ob.name}"/></td>
<td><c:out value="${ob.measure}"/></td>
<td><c:out value="${ob.quantity}"/></td>
<td><c:out value="${ob.price}"/></td>
</tr>
</c:forEach>
</c:if>
Run Code Online (Sandbox Code Playgroud)
更新 这里是控制器:
@RequestMapping(value={"/supply"}, method=RequestMethod.POST)
public String consumptFormulate(Locale locale, Model model, @ModelAttribute ConsumptionForm cmd, HttpServletRequest request){
String[] s_str =cmd.getFromDate().split("/");
String normal_s = s_str[2]+"-"+s_str[0]+"-"+s_str[1];
String[] f_str = cmd.getToDate().split("/");
String normal_f = f_str[2]+"-"+f_str[0]+"-"+f_str[1];
List<Good> list = service.getGoods(normal_s,normal_f,cmd.getSocGoods(),cmd.getTradeObj());
List<ListGoodsForm> listg = new ArrayList<ListGoodsForm>();
org.jfree.data.xy.XYSeries series = new org.jfree.data.xy.XYSeries("?? ?????:");
if(!list.isEmpty()){
lg=list;
ListGoodsForm listo = new ListGoodsForm();
java.util.Calendar ca = java.util.Calendar.getInstance();
for(Good g: list){
listo.setName(g.getName());
listo.setMeasure(g.getMeasure());
listo.setPrice(g.getPrice());
listo.setQuantity(g.getQuantity());
listg.add(listo);
java.util.Date date = g.getDates();
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("MMMM");
ca.setTime(date);
int in = ca.get(java.util.Calendar.MONTH);
String month = format.format(date);
}
}
request.setAttribute("listGood",listg);
//model.addAttribute("listGood", listg);
model.addAttribute("GOODS", prepareDataList());
// model.add
model.addAttribute("COMPANY",sservice.getSupplierName());
model.addAttribute("consumptionForm", cmd);
return "supply";
}
Run Code Online (Sandbox Code Playgroud)
我的猜测是您的控制器正在执行以下操作:
Good g = new Good();
List<Good> goods = new ArrayList<Good>();
for (int i = 0; i < 4; i++) {
g.setName("a");
...
goods.add(g);
}
Run Code Online (Sandbox Code Playgroud)
这意味着您正在修改同一个 Good 对象 4 次,并将其添加到列表中 4 次。最后,您将拥有 4 个相同的对象,其中包含您在上次迭代中设置的状态。
相反,请执行以下操作:
List<Good> goods = new ArrayList<Good>();
for (int i = 0; i < 4; i++) {
Good g = new Good();
g.setName("a");
...
goods.add(g);
}
Run Code Online (Sandbox Code Playgroud)
编辑:您编辑的问题证实了我的猜测:
ListGoodsForm listo = new ListGoodsForm();
Run Code Online (Sandbox Code Playgroud)
该行应该位于 for 循环内部,而不是外部。