如何在JSP页面实现含日、月、年下拉框的日期输入功能
在JSP中实现日/月/年三下拉框日期输入字段
嘿,这事儿不难!我给你两种实现方式,一种是静态HTML写法(适合范围固定的场景),另一种是JSP动态生成选项(更灵活,比如自动生成年份范围),你可以按需选择:
方式一:静态HTML实现
如果日期范围不会经常变动,直接写死下拉框选项最省心:
<form action="your-submit-url.jsp" method="post"> <label for="day">日:</label> <select id="day" name="day"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <!-- 省略6-30的选项,你可以手动补全 --> <option value="31">31</option> </select> <label for="month">月:</label> <select id="month" name="month"> <option value="1">January</option> <option value="2">February</option> <option value="3">March</option> <option value="4">April</option> <option value="5">May</option> <option value="6">June</option> <option value="7">July</option> <option value="8">August</option> <option value="9">September</option> <option value="10">October</option> <option value="11">November</option> <option value="12">December</option> </select> <label for="year">年:</label> <select id="year" name="year"> <option value="2018">2018</option> <option value="2017">2017</option> <option value="2016">2016</option> <!-- 省略中间年份,手动补全到你需要的起始年份,比如2000 --> <option value="2000">2000</option> </select> <input type="submit" value="提交"> </form>
方式二:JSP动态生成选项
如果需要灵活调整年份范围,或者不想手动写几十个<option>,用JSP脚本动态生成更高效:
<%@ page import="java.util.Calendar" %> <form action="your-submit-url.jsp" method="post"> <label for="day">日:</label> <select id="day" name="day"> <%-- 循环生成1-31的日期选项 --%> <% for (int i = 1; i <= 31; i++) { %> <option value="<%= i %>"><%= i %></option> <% } %> </select> <label for="month">月:</label> <select id="month" name="month"> <%-- 定义月份英文名称数组,循环生成选项 --%> <% String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; %> <% for (int i = 0; i < monthNames.length; i++) { %> <option value="<%= i + 1 %>"><%= monthNames[i] %></option> <% } %> </select> <label for="year">年:</label> <select id="year" name="year"> <%-- 动态生成2018及之前的年份,这里示例从2000到2018,可自行调整起始年 --%> <% int endYear = 2018; %> <% int startYear = 2000; %> <% for (int i = endYear; i >= startYear; i--) { %> <option value="<%= i %>"><%= i %></option> <% } %> </select> <input type="submit" value="提交"> </form>
小提醒:
- 表单提交后,后台可以通过
request.getParameter("day")、request.getParameter("month")、request.getParameter("year")获取三个字段的值,再组合成日期对象(比如LocalDate)。 - 这种基础实现没有做日期合法性校验(比如2月没有30号),如果需要校验,可以在前端加JavaScript判断,或者在后台用Java代码处理。
内容的提问来源于stack exchange,提问作者Kkunal
相关产品推荐
相关产品推荐

