1

我真正的目标是有一个简单的标签,它会自动以特定方式格式化日期(yyyy-mm-dd HH:mm)。如果我们将来需要更改它,最好不必到处都有,需要更新到新格式。

就目前而言,我不明白为什么我传递给我的标签的日期参数被解释为字符串。

这是我的简单标签(date.tag)文件:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ attribute name="value" type="java.util.Date" rtexprvalue="false" required="true"%>
${value} ${value.class}

这是我用来测试它的 jsp 文件。

<%@ taglib prefix="me" uri="/WEB-INF/tags"%>
<jsp:useBean id="now" scope="application" class="java.util.Date" />
<me:date value="${now}" />

输出为:Fri Jul 12 10:36:05 MST 2013 class java.lang.String

4

3 回答 3

0

正如 JB Nizet 所说:首先你不见了rtexprvalue="true",属性“uri”也应该更改为“tagdir”。

在标记文件中,除了输出“value”的值及其类型之外,我什么也没做:

<%@ attribute name="value"  rtexprvalue="true" required="true" type="java.util.Date" %>
${value}
<%
out.print(jspContext.getAttribute("value").getClass());
%>

结果是:Sat Jul 13 02:22:31 GMT+02:00 2013 class java.util.Date

于 2013-07-12T23:56:56.423 回答
0

按照 JB Nizet 和 aur 的建议,我能够使用${value['class']}来获取输出“class java.util.Date”

我也尝试<fmt:formatDate value="${value}" pattern="MM/dd/yyyy"/>并获得了预期的格式化日期。

我正在使用 Tomcat-7.0.42 和 jstl-1.2。

于 2013-10-18T03:34:28.170 回答
0

rtexprvalue="true"的属性声明中缺少。

于 2013-07-12T22:33:53.747 回答