7

私は次のタグを持っています:

<%@ tag body-content="empty"%>
<%@ attribute name="timestamp" required="true" type="java.sql.Timestamp"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<jsp:useBean id="dateValue" class="java.util.Date" />
<c:if test="${not empty timestamp}">
    <jsp:setProperty name="dateValue" property="time" value="${timestamp}" />
    <span title="${timestamp}"> <fmt:formatDate value="${dateValue}"
            pattern="MM/dd/yyyy HH:mm" /> </span>
</c:if>

ただし、次のエラーが発生します。

エラー500:com.ibm.ws.jsp.JspCoreException:java.lang.IllegalArgumentException:タイプクラスjava.sql.Timestampの5/1/1210:36AMをlongに変換できません

この答えに従って、タイムスタンプをJSTLの日付に変換しようとしたので、サーブレットで何も変更しませんでした。JSTLを使用して、をjava.sql.Timestamp日付に変換して操作できるようにするにはどうすればよいですか?formatDate

4

1 に答える 1

9

渡す必要がありTimestamp#getTime()ます。

<jsp:setProperty name="dateValue" property="time" value="${timestamp.time}" />

しかし、これはまったく意味がありません。はjava.sql.Timestampすでにのサブクラスですjava.util.Date。したがって、これも行う必要があります。

<%@ attribute name="timestamp" required="true" type="java.sql.Timestamp"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<c:if test="${not empty timestamp}">
    <span title="${timestamp}"><fmt:formatDate value="${timestamp}"
            pattern="MM/dd/yyyy HH:mm" /></span>
</c:if>

java.util.Dateちなみに、代わりにプロパティを宣言するようにモデルを変更したいと思います。モデルとビューでは使用せずjava.sql.Timestamp、データレイヤーでのみ使用してください。解析/フォーマットによってに変換ResultSet#getTimestamp()する必要はありません。java.util.Dateアップキャストだけで十分です。

例えば

import java.util.Date;

public class SomeModel {

    private Date somefield;

    // ...
}

someModel.setSomefield(resultSet.getTimestamp("somefield"));
于 2012-05-02T15:35:32.930 に答える