2013-11-10 3 views
2

Я пытаюсь использовать foreach loop в Select тег.Struts: для каждой петли

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

Пожалуйста, поделитесь своим Действие класса код ... –

+0

Какая версия Struts вы используете? Struts2 не имеет пространства имен 'html', Struts1 не имеет пространства имен' s'. –

+0

код действия класс используется. – user2761566

ответ

1

Если вы пытаетесь использовать Еогеасп цикл, то вы можете попробовать forEach тег из ядра JSTL TagLib.

<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> 
Смежные вопросы