如何将Date对象传递给使用标记文件定义的自定义JSP标记?

时间:2013-07-12 22:29:34

标签: jsp jsp-tags

我的真正目标是拥有一个简单的标签,该标签将以特定方式自动格式化日期(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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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

答案 2 :(得分:0)

根据JB Nizet和a.u.r.的建议,我能够使用${value['class']}来获取输出“class java.util.Date”

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

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