2

我正在尝试在标签中使用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>

我试图在下拉列表中列出从当前年份到 YEAR : 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);
   }
4

1 回答 1

1

如果您尝试使用 foreach 循环,那么您可以尝试forEach来自 JSTL 核心标签库的标签。

<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>  
于 2013-11-11T17:12:36.347 回答