2015-12-22 3 views
0

Я отчасти отчаялся. У нас много кода, и у нас также есть много переменных, многие из которых находятся внутри viewScope и других HashMaps. Время от времени мы получаем ошибку, что некоторые объекты DateTime не могут быть сериализованы. Я понимаю, почему, проблем нет. Но какая переменная? Какой элемент HashMap? Поскольку сериализация происходит автоматически, из моего контроля, проблема может быть где угодно. Это может быть значение DateTime, которое код помещает в переменную viewScope (я думаю, что я проверил их все), это могут быть мои собственные HashMaps, и это может быть даже строки с значениями столбцов из представления. Я просто не знаю ...XPages: NotSerializableException on DateTime

Может ли кто-нибудь указать мне в правильном направлении, чтобы узнать, где это @ $ @% #! Исключение действительно происходит? Например: может ли трассировка стека быть более информирующей о том, в какой HashMap обнаружила проблему, и, возможно, даже какой ключ?

@ $ @% #! - read: elusive ...

ответ

0

Один из вариантов заключается в добавлении PhaseListener в ваше приложение, которое на этапе визуализации Render выполняет итерацию по всем областям и выводит ключ и вывод getClass() для значения. Код также может сделать то же самое для хэш-карт в компонентах.

В XSnippets есть различные примеры PhaseListeners.

+0

С уважением, Пол, я скоро буду слушать фаны ... –

+0

Пол, может ли это быть праведным способом создать и использовать собственную страницу ошибок, содержащую панель инструментов отладки, где вы можете видеть переменные? –

+0

Это вариант, но если DateTime добавляется во время частичного обновления и сбой сериализации, он может быть пустым или отсутствовать к моменту появления страницы с ошибкой. Я не встречал этого раньше, поэтому я не уверен, что он сделает с областями к моменту запроса GET для страницы с ошибкой. –