jsp使用java。时间带有JSTL的LocalDate<fmt:formatDate>操作
我还没有弄清楚如何在JSP中显示java.time.LocalDate
值
在我的JSP中,我有以下内容:
<fmt:formatDate value="${std.datum}" type="date" pattern="dd.MM.yyyy" var="stdDatum" />
std.datum
是类型java.time.LocalDate。呈现JSP时,我会遇到以下异常:
javax.el.ELException:
Cannot convert 2015-02-14 of type class java.time.LocalDate to class java.util.Date
我想是转换吧
那么,是否可以使用<fmr:formatDate>
操作格式化LocalDate类的实例
# 1 楼答案
是的,这是一个与转换相关的异常
解决方案
您可以首先使用JSTL的“支持I18n的格式化标记库”中的^{} 操作执行转换,然后使用^{} 操作执行格式化
以下是一个例子:
该解决方案也在"JavaServer Pages™ Standard Tag Library (JSTL)"规范1.2版中给出(参见第109页)
# 2 楼答案
我想避免改变所有地方<;fmt:formatDate/>;在使用时,我创建了以下两个类:
首先,一个转换器,用于转换(部分)java。时间课。它检查java。util。Date是目标类型,如果不是,则不起任何作用。它支持源时间作为java。util。日期(包括java.sql.Timestamp和java.sql.Date)、LocalDate、LocalDateTime、ZonedDateTime、Instant或Long(时间单位为毫秒)
接下来是一个ServletContextListener类,用于注册用于JSP的转换器:
最后,在web中创建一个条目。xml(如果不使用注释或其他方式):
# 3 楼答案
爪哇:
JSP:
# 4 楼答案
这是一个老问题,但我发现在这种情况下最好使用自定义tld:不需要对字符串进行任何双重转换
创建自己的tld文件,然后重写FormatDate类。最后,声明您自己的自定义前缀并使用custom:formatDate而不是fmt:formatDate
这是一个简化的版本
JSP中的用法:
WEB-INF/自定义。tld文件
然后是java类标记文件