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

yza*_*rew 5 foreach jsp jstl el propertynotfoundexception

我的项目是使用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>
Run Code Online (Sandbox Code Playgroud)

似乎"statusHistory"被视为String,但不是对象.

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

public Class StatusHistory{
    ...
    private Date timestamp;
    public Date getTimestamp(){...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

我在谷歌上搜索了一整天.有些帖子说getter方法不符合约定.但似乎不是我的情况.
有人可以帮帮我吗?

在此先感谢安德鲁

Bal*_*usC 8

这里,

<c:forEach var="statusHistory" items="statusHistoryList">
Run Code Online (Sandbox Code Playgroud)

您提供的items属性为<c:forEach>普通的vanilla字符串,其值"statusHistoryList"依次确实没有getTimestamp()方法.

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

<c:forEach var="statusHistory" items="${statusHistoryList}">
    ${statusHistory.timestamp}
</c:forEach>
Run Code Online (Sandbox Code Playgroud)