Ошибка DisplayTag - PullRequest
       6

Ошибка DisplayTag

2 голосов
/ 17 февраля 2010

Я использую DisplayTag с нумерацией страниц для отображения объектов List. Транзакции имеют свойство под названием 'company' / getCompany (), которое является объектом Company. Объект Company содержит строку с именем name / getName ().

Мой код выглядит так:

<display:table name="${transactions}" id="transaction" pagesize="2" defaultsort="1">  

<display:column property="id" title="ID" href="showTransactionDetails.html" paramId="id" />
<display:column property="company.name" title="Company Name" sortable="true"    >
<display:column property="status" title="Status" sortable="true">

</display:table>

Вот странная часть .... Все отлично работает, когда отображается первая страница, и в общей сложности 11 страниц, каждая из которых содержит 2 записи.

Я могу нажать на номер страницы и посмотреть продвижение страницы. Но по какой-то странной причине, когда я нажимаю на страницу (2-4), я получаю исключение:

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Исключение: [.LookupUtil] Ошибка при поиске свойство "company.name" в объекте тип "Com.replacements.entity.Transaction". Причина: ноль

(Также важно отметить, что все записи транзакций содержат значение для company.name, так как это обязательное поле в моей БД)

Ответы [ 8 ]

2 голосов
/ 17 февраля 2010

Я решил это, изменив свойство компании в отображении Hibernate на «lazy = false»

Я до сих пор не уверен, почему нумерация страниц работала на некоторых страницах, а не на всех. Но это исправило это.

Спасибо всем за ваши идеи.

2 голосов
/ 17 февраля 2010

Возможно ли, что компания является нулевой. То есть, у вас есть транзакция, в которой нет ни одной компании в базе данных.

1 голос
/ 17 февраля 2010

Попробуйте изменить name="${transactions}" в теге display:table на name="transactions".

Предположим, у вас есть коллекция transactions в сеансе или запросе или что-то еще

1 голос
/ 17 февраля 2010

Мое первое предположение - пустой список компаний. Я бы посоветовал вам распечатать дамп, чтобы вывести результаты ваших транзакций до того, как они попадут на дисплей.

Если это не проблема, я видел проблемы с отображением, вызванные специальными символами. Одно из названий компаний может содержать управляющий символ или другой не отображаемый символ.

1 голос
/ 17 февраля 2010

Как говорит @Vincent, вероятно, company равно нулю. Возможно, у вас есть значение в вашей базе данных, но, возможно, есть проблема, из-за которой ваш класс Transaction неправильно читает значение db и устанавливает его член company. Вы пытались установить точку останова и посмотреть на экземпляр Transaction?

0 голосов
/ 30 ноября 2012

Убедитесь, что у вас есть методы установки и получения для всех атрибутов вашего класса и имена, соответствующие именам атрибутов.

0 голосов
/ 01 декабря 2010

тэг requestURI ... вот так .... requestURI = "

0 голосов
/ 17 февраля 2010

Сообщение об исключении буквально говорит о том, что Transaction равно null. Таким образом, очевидно, что в списке транзакций за ${transactions} стоит элемент null. Похоже на ошибку в логике загрузки / заполнения списка транзакций. Может быть, последний пункт null? Или, может быть, список ограничен запросом и зависит от некоторых параметров запроса, которые отсутствуют в последующем запросе, поэтому загрузка / заполнение списка не удалась?

Для заинтересованных, если бы Company было нулевым, как некоторые предполагают, EL не ошибся бы таким образом. Вместо этого он упомянул бы тип объекта Company.

...