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