Ошибка DisplayTag

Я использую 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: Exception: [.LookupUtil] Ошибка при поиске свойства "company.name" в типе объекта "com.replacements.entity.Transaction". Причина: ноль

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

8 ответов

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

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

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

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

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

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

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

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

Если у вас есть transactions сбор в сеансе или запросе или что-то еще.

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

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

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

Тег requestURI... вот так.... requestURI="

Другие вопросы по тегам