我有以下标签:
<%@ 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/12 10:36 AM转换为long
我试图按照此答案将时间戳转换为JSTL中的日期,因此我不会在servlet中进行任何更改。如何使用JSTL 将a转换java.sql.Timestamp
为日期以便formatDate
可以使用它?
您需要传递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"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句