2012-12-27 10 views
7

私はいくつかの例を検索しましたが、まだ得られていません。私はコントローラからjspページにGOODオブジェクトのListを渡しています。リストオブジェクトをループしようとしましたが、1つの要素しか繰り返し表示されませんでした。私は豆を使うべきですか?はいの場合、私の場合にはより具体的な例を挙げることができますか?<c:foreach 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> 

更新 ここでは、コントローラです:

@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"; 
} 
+0

どのように 'listGood'に値を渡しますか? – gefei

+0

*どのように失敗していますか? –

+0

'listGood'にはいくつのアイテムが必要ですか?おそらくリストを変更する通訳がいるかもしれません。 – Tom

答えて

3

を渡すために、私の推測では、あなたのコントローラが次のことをやっているということです。

Good g = new Good(); 
List<Good> goods = new ArrayList<Good>(); 
for (int i = 0; i < 4; i++) { 
    g.setName("a"); 
    ... 
    goods.add(g); 
} 

これは、同じ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); 
} 

EDIT:あなたの編集した質問は、ちょうど私の推測を確認:

ListGoodsForm listo = new ListGoodsForm(); 

この行は外forループの内側にあること、そしてべきではありません。

+0

はい、助けてくれました、ありがとう – Olzhas

+0

良い説明、私は同じ問題を抱えており、これを考慮して解決しました。ありがとうございました! – Ricardo

1

使用このコードはリストに

request.setAttribute("listGood",listg); 
+0

重複したレコードはありませんが、回答は試みましたが機能していません。たとえば、リストに4レコードが含まれている場合は、4回表示され、それぞれに最初の行のみが表示されます。 Beanを使うと思いますか? – Olzhas

関連する問題