【问题标题】:Reverse JSTL for each loop for year (using dropdown)为每年的每个循环反向 JSTL(使用下拉菜单)
【发布时间】:2024-04-15 03:55:02
【问题描述】:

我想创建一个从当前年份开始的下拉菜单,或者至少从 2016 年开始并以 1900 年结束

我只有正确的代码,但不能正常工作。

    <select id="year" name="year">
        <c:forEach begin="1900" end="2016" var="val">
            <c:set var="decr" value="${2016-val}"/>
            <option value="${decr}" ${birthYear == decr ? 'selected' : ''}>${decr}</option>
        </c:forEach>
    </select>

【问题讨论】:

    标签: java jsp foreach jstl


    【解决方案1】:

    试试这个。

    <select id="year" name="year">
                <c:forEach begin="0" end="116" var="val">
                    <c:set var="decr" value="${2016 - val}"/>
                    <option value="${decr}" ${birthYear == decr ? "selected='selected'": ''}>${decr}</option>
                </c:forEach>
    </select>
    

    【讨论】:

    • 你太棒了!非常适合我!好工作! :)
    • 谢谢你,爱德华。
    【解决方案2】:

    另一种解决方案,使用动态加载的current year

    在你的 jsp 文件顶部添加以下内容,以加载 fmt 标签库

    <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    

    然后使用以下命令,创建一个名为 year 的变量,其值为当前年份。

    <jsp:useBean id="now" class="java.util.Date" />
    <fmt:formatDate var="year" value="${now}" pattern="yyyy" />
    

    最后,使用这个值,以便以更有效的方式创建您想要的select 选项。

    <select id="year" name="year">
        <c:forEach begin="0" end="${year-1900}" var="age">
            <option value="${age}" ${birthYear == age ? "selected='selected'": ""}>${age}</option>
        </c:forEach>
    </select>
    

    【讨论】:

      最近更新 更多