JSP中通过JSTL从XMLCalendar到util日期的日期转换

时间:2015-07-08 05:31:14

标签: jsp jstl jsp-tags

我正在尝试将XMLCalendar日期转换为正常日期格式,以便在JSP页面上呈现。使用下面的标签时我得到例外:

<fmt:formatDate value="${xmlCalendarDate}" pattern="dd/MM/yyyy" />

使用此标记我将获得异常

 java.lang.IllegalArgumentException: Cannot convert 2015-07-02T21:33:35Z of type class org.eclipse.emf.ecore.xml.type.internal.XMLCalendar to class java.util.Date

是否有任何其他标记或其他方法在我的JSP页面上呈现此日期。

提前致谢。

2 个答案:

答案 0 :(得分:2)

    <td data-title="Order Date">
        <fmt:formatDate value="${order.dateCreated.toGregorianCalendar().time}" pattern="yyyy/MM/dd HH:mm:ss" />
        <%--${order.dateCreated}--%>
    </td>
    <!--order status-->
    <td data-title="Order Status">
        <c:if test="${order.status.code=='CREATED'}">
            <spring:message code="web.page.order.create" />
        </c:if>
    </td>
    <%-- ${order.status.code}</td>--%>
    <!--quanity-->
    <td data-title="Total"><span class="f_size_large fw_medium scheme_color">${order.currency.symbol}${order.totalChargeAmount.price}</span>
    </td>
</tr>

答案 1 :(得分:0)

这是XMLGregorianCalendar的子类。您可以首先通过java.util.Date获取java.util.Calendar,然后在其上调用XMLGregorianCalendar#toGregorianCalendar(),从而获得Calendar#getTime()

因此,假设支持EL 2.2的环境,应该这样做:

<fmt:formatDate value="${xmlCalendarDate.toGregorianCalendar().time}" pattern="dd/MM/yyyy" />

如果您还没有使用EL 2.2(这是Servlet 3.0 / Java EE 6的标准部分),那么您需要在前端控制器中执行XMLGregorianCalendarDate转换第一

Date date = xmlCalendarDate.toGregorianCalendar().getTime();
// ...