5

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

我通过休眠从数据库中获取实体列表,并将其作为模型添加到 jsp 的模型映射中。当 jsp 渲染我的网页时,它会抛出“javax.el.PropertyNotFoundException”。

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

例外来自:

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

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

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

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

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

在此先感谢安德鲁

4

3 回答 3

9

这里,

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

您使用普通的香草字符串提供items属性,其值又确实没有方法。<c:forEach>"statusHistoryList"getTimestamp()

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

<c:forEach var="statusHistory" items="${statusHistoryList}">
    ${statusHistory.timestamp}
</c:forEach>
于 2011-05-27T01:26:31.173 回答
-1

在我的情况下,我没有添加implements java.io.Serializable到 bean,所以它没有识别 bean 的属性

以下是将 JavaBean 与其他 Java 类区分开来的独特特征 -</p>

It provides a default, no-argument constructor.

It should be serializable and that which can implement the Serializable interface.

It may have a number of properties which can be read or written.

It may have a number of "getter" and "setter" methods for the properties.

参考教程point-JSP

一旦添加它就解决了这个问题。

于 2019-09-10T21:07:55.913 回答
-1

保持它喜欢

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

确保检查 forEach 循环中的项目,有时由于额外的空间,它就像一个字符串。尝试重新输入。

于 2020-05-12T15:54:47.457 回答