7

私はいくつかの例を検索しましたが、まだ取得していません。GOODオブジェクトのリストをコントローラーからjspページに渡します。リストオブジェクトをループしようとしましたが、1つの要素のみが繰り返し表示されています。豆を使うべきですか?はいの場合、私の場合のより具体的な例を教えてください。

 <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";  
}

EXTRACT()関数を使用する

select  
     EXTRACT(YEAR FROM BirthDate), 
     EXTRACT(MONTH FROM BirthDate), 
     EXTRACT(DAY FROM BirthDate) 
from t
4

2 に答える 2

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);
}

編集:そしてあなたの編集された質問はちょうど私の推測を確認しました:

ListGoodsForm listo = new ListGoodsForm();

この行は、外側ではなく for ループの内側にある必要があります。

于 2012-12-27T11:10:33.243 に答える
1

このコードを使用してリストを渡します

 request.setAttribute("listGood",listg);
于 2012-12-27T10:31:41.057 に答える