c: forEach создает javax.el.PropertyNotFoundException: свойство 'foo' не найдено для типа java.lang.String - PullRequest
5 голосов
/ 27 мая 2011

Мой проект использует hibernate 3.4.0 GA для доступа к базе данных и Spring MVC 2.5.6 для обработки веб-запроса и jsp (jstl) для отображения представления (веб-страницы).

Я получаю список сущностей из базы данных с помощью hibernate и добавляю его как модель в mapmap для jsp. Когда jsp отображает мою веб-страницу, он выдает «javax.el.PropertyNotFoundException».

javax.el.PropertyNotFoundException: свойство 'отметка времени' не найдено для типа java.lang.String

и исключение исходит из:

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

Похоже, что statusHistory считается строкой, а не объектом.

Класс StatusHistory имеет свойство timestamp и метод получения:

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

Я искал в Google целый день. В некоторых постах говорится, что метод получения не соответствует соглашению. Но, похоже, это не мое дело.
Может кто-нибудь, пожалуйста, помогите мне?

Заранее спасибо Andrew

1 Ответ

8 голосов
/ 27 мая 2011

Здесь

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

Вы передаете атрибут items для <c:forEach> простой ванильной строкой со значением "statusHistoryList", что, в свою очередь, действительно неУ него нет метода getTimestamp().

Вы должны ссылаться на него, используя вместо этого выражение EL ${...}.

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