首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果今天是会计年度的最后一天,则从下拉菜单中删除当前年度

如果今天是会计年度的最后一天,则从下拉菜单中删除当前年度
EN

Stack Overflow用户
提问于 2016-04-27 02:48:05
回答 2查看 71关注 0票数 0

我有一个jsp页面,可以让用户选择资金的到期年份。它基本上给出它们的年份,并将该会计年度传递给java bean,即:

代码语言:javascript
复制
<TR>
  <TD colspan=3>
      <FONT style="FONT-SIZE: 8pt" face="trebuchet, verdana, tahoma, sans serif" color=black><B>Funding Expiration Year</B></FONT>
  </TD>
  <TD width="60%">    
       <select id="selectYearId" name="fundExpirationDate">
           <option value=""></option>
           <option value="20150930">2015</option>
           <option value="20160930">2016</option>
           <option value="20170930">2017</option>
           <option value="20180930">2018</option>
           <option value="20190930">2019</option>
           <option value="20200930">2020</option>
           <option value="20210930">2021</option>
           <option value="20220930">2022</option>
           <option value="20230930">2023</option>
           <option value="20240930">2024</option>
           <option value="20250930">2025</option>
       </select>
  </TD>
</TR>

我也试着用javascript动态地打印年度打印,这样我就不用明年来删除2015年了……但是一点运气都没有。(如果有人能指导我如何做到这一点,我将非常感激。)

不管怎样,本财年将在09/30结束。

当这一天到来时,我需要删除让用户能够选择年份的选项。

这可行吗?

EN

回答 2

Stack Overflow用户

发布于 2016-04-27 03:21:07

粗略地说:

在您的Controller/Servlet中(或者甚至在JSP中)设置一个模型。

代码语言:javascript
复制
Calendar cal = Calendar.getInstance();
int currentYear = cal.get(Calendar.YEAR);

List<Integer> years = new ArrayList<Integer>();

for(int i = currentYear - 1; i < currentYear + 10; ++ i){
    years.add(i);
}

request.setAttribute("years", years);

在您的JSP中,使用JSTL迭代集合:

代码语言:javascript
复制
<c:forEach items="${years}" var="year"/>
    <option value="${year}0930">${year}</option>
</c:forEach>
票数 1
EN

Stack Overflow用户

发布于 2016-04-27 20:59:23

@AlanHay感谢您的建议。你帮我找到了解决方案。

首先,我像Alan建议的那样设置了年份属性,并检查今天是否是会计年度的最后一天,如果是,则不在选项列表中显示该年份,同时将第一个选项设置为空,以防用户不想选择任何内容,并使用默认值:

代码语言:javascript
复制
 Calendar cal = Calendar.getInstance();
    int currentYear = cal.get(Calendar.YEAR);
    int lastYear = currentYear-1;
    int currentMonth = cal.get(Calendar.MONTH);
    int currentDay = cal.get(Calendar.DAY_OF_MONTH);

    List<Integer> years = new ArrayList<Integer>();
    years.add(0);

    for(int i = currentYear-1; i < currentYear + 10; ++ i){
        if(!(currentMonth == 9 && currentDay == 30 && i == lastYear))
            years.add(i);
    }
    request.setAttribute("years", years);

然后,我显示我的select元素:

代码语言:javascript
复制
<TD>
    <select name="expirationDate">
   <%
   String s_year = "";
   for(int m_year : years)
   {
        s_year = m_year + "";
        if(m_year == 0)
           s_year = "";%>
        <option value="<%=s_year%>0930"><%=s_year%></option>
    <%}%>
</TD>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36873342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档