Struts:用于每个循环

时间:2013-11-10 16:16:35

标签: java jsp struts jstl struts-1

我正在尝试在foreach代码中使用Select循环。

<html:select property="year" >

   <s:iterator var="i" begin="${1}" end="${monthlyChargeForm.currentYear - 2000}" >
            <s:set var="counter" value="${monthlyChargeForm.currentYear}"/>
                 <html:option  value="${counter}">
                        <c:out value="${counter}"/>                  
                 </html:option>
            <s:set var="counter" value="${counter-1}"/>
     </s:iterator>
</html:select>

我试图列出当前年份到年份的所有年份:2000年的下拉列表。 但我得到空的下拉。

动作类代码:我用过

// monthlyChargeForm.setCurrentYear(now.get(Calendar.YEAR) );

获得当年。

public class MonthlyChargeAction extends Action {

 private ActionMessages messages;

 public ActionForward execute(ActionMapping mapping, ActionForm form,  
                             HttpServletRequest request,HttpServletResponse response)        
   throws Exception {
    ServletContext context = getServlet().getServletContext();
    BACUtils bacUtils = new  BACUtils();
    String sessionStatus = HtmlBean.isSessionOut(request.getSession(false), context);
    if(!Constants.SUCCESS_STATUS.equals(sessionStatus)) {
        return mapping.findForward("sessionOut");
    }
    String accesssStatus = HtmlBean.isSessionValid(request.getSession(false), context,  
                                                  Properties.ACCESS_PROFILE[8][0]);
    if(!Constants.SUCCESS_STATUS.equals(accesssStatus)) {
        return mapping.findForward("sessionOut");
    }
    MonthlyChargeForm monthlyChargeForm = (MonthlyChargeForm)form;
    Reports reports = new  Reports();
    String sUser =(String) request.getSession().getAttribute("USERID");
    String returnVal = "";
    int i = 0;
    try {
            monthlyChargeForm.setFromDate(bacUtils.getDate());
            monthlyChargeForm.setToDate(bacUtils.getDate());


            Calendar now = Calendar.getInstance();

            String fromDate = monthlyChargeForm.getFromDate();
            String toDate = monthlyChargeForm.getToDate();
            String curentDate = bacUtils.getDate();

            monthlyChargeForm.setCurrentYear(now.get(Calendar.YEAR) );

            System.out.println("Current Year :::::::::" +  

                                                 monthlyChargeForm.getCurrentYear());

            AuditTrial.insertLog(5,sUser,null,"General Reports Module Loaded 
                                                        Successfully",(String) 
  request.getSession().getAttribute("OPER_TYPE"),"S",request.getRemoteAddr(),context);
            if(monthlyChargeForm.getPageIndex() == null ||
                    monthlyChargeForm.getPageIndex().trim().length() == 0)
                    monthlyChargeForm.setPageIndex(Integer.toString(BACUtils.getIntVal(
                            monthlyChargeForm.getPageIndex())));

                     if(monthlyChargeForm.getMonth()!=null &&        
                                            monthlyChargeForm.getYear()!=null )
                     {
                monthlyChargeForm.setMonthlyChargeReport(
                        reports.getMonthlyChargeData(monthlyChargeForm, 10, context));
                     }


    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println(Constants.SUCCESS_MAPPING);
    return mapping.findForward(Constants.SUCCESS_MAPPING);
   }

1 个答案:

答案 0 :(得分:1)

如果您尝试使用foreach循环,则可以尝试使用JSTL核心标记库中的forEach标记。

<html:select property="year" >
   <c:forEach varStatus="i" begin="${monthlyChargeForm.currentYear}" end="2000" step="-1">
     <html:option  value="${i.index}">
       <c:out value="${i.index}"/>                  
     </html:option>
   </c:forEach>
</html:select>