c:forEach抛出javax.el.PropertyNotFoundException:在java.lang.Stringtypes中找不到属性'foo'

我的项目是使用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.Stringtypes中找不到属性'timestamp'

而例外来自:

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

这似乎是“statusHistory”被视为一个string,而不是一个对象。

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

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

我在谷歌上search了一整天。 有些文章说getter方法不符合约定。 但似乎不是我的情况。
有人可以帮帮我吗?

在此先感谢安德鲁

这里,

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

你用一个普通的vanillastring提供了<c:forEach>items属性,其值为"statusHistoryList" ,而这个string确实没有getTimestamp()方法。

您需要使用ELexpression式${...}来引用它。

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