小编典典

c:forEach抛出javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性'foo'

jsp

我的项目使用hibernate 3.4.0 GA访问数据库,并使用Spring MVC 2.5.6处理Web请求,并使用jsp(jstl)呈现视图(网页)。

我从hibernate状态的数据库中获取了一个实体列表,并将其作为模型添加到jsp的modelmap中。当jsp渲染网页时,它会抛出“
javax.el.PropertyNotFoundException”。

javax.el.PropertyNotFoundException:在类型java.lang.String上找不到属性“ timestamp”

异常来自:

<c:forEach var="statusHistory" items="statusHistoryList">
    ${statusHistory.timestamp}
</c:forEach>

似乎“ statusHistory”被认为是字符串,而不是对象。

“ StatusHistory”类具有“ timestamp”属性和getter方法:

public Class StatusHistory{
    ...
    private Date timestamp;
    public Date getTimestamp(){...}
    ...
}

我已经在Google上搜索了一整天。某些帖子说,getter方法未遵循约定。但这似乎不是我的情况。
有人可以帮帮我吗?

预先感谢安德鲁


阅读 750

收藏
2020-06-08

共1个答案

小编典典

这里,

<c:forEach var="statusHistory" items="statusHistoryList">

您要提供带有纯原始String
items属性,<c:forEach>而其值"statusHistoryList"实际上确实没有getTimestamp()方法。

您需要使用EL表达式来引用它${...}

<c:forEach var="statusHistory" items="${statusHistoryList}">
    ${statusHistory.timestamp}
</c:forEach>
2020-06-08