如何在JSP的Input框中设置当前日期作为默认值?
我来帮你搞定这个JSP输入框默认显示当前日期的问题!你的代码没法正常显示当前日期,主要是两个逻辑顺序和默认值处理的问题:
首先,你先在输入框里引用了${fmtDate},之后才用<fmt:formatDate>定义这个变量——JSP是从上到下解析的,这时候解析输入框的时候根本找不到fmtDate这个变量;其次,你没处理form.bean.dateProperty为空的情况,没法自动填充当前日期作为默认值。
解决方案步骤
首先确保你已经引入了JSTL的核心库和格式化标签库(如果页面里还没加的话):
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
然后修改日期输入框的代码,调整顺序并添加默认值逻辑:
<tr> <td align="left" width="19%">Start Date :</td> <td width="33%" align="left"> <%-- 先处理默认值:如果dateProperty为空,就用当前日期,否则用已有值 --%> <fmt:formatDate var="fmtDate" value="${empty form.bean.dateProperty ? new java.util.Date() : form.bean.dateProperty}" pattern="yyyy-MM-dd" <%-- 这里可以根据你的需求调整日期格式,比如yyyy/MM/dd --%> /> <%-- 现在fmtDate已经定义好,直接作为输入框默认值 --%> <input type="text" name="bean.dateProperty" value="${fmtDate}"/> </td> </tr>
关键说明
- 顺序问题:必须先通过
<fmt:formatDate>生成并定义fmtDate变量,再在输入框的value属性里引用它,JSP才能正确解析到变量值。 - 默认值逻辑:用EL的三元表达式
${empty 变量 ? 默认值 : 变量}判断,如果form.bean.dateProperty是空的,就自动生成当前java.util.Date对象作为数据源。 - 格式自定义:
pattern属性可以根据业务需求调整,比如改成MM/dd/yyyy或者yyyy-MM-dd HH:mm:ss(如果需要时间的话)。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

