Этот должен был быть брошен как ViewExpiredException
. Это ошибка, которая начала проявляться в Mojarra 2.0.3 и была исправлена в Mojarra 2.1.0. См. Также выпуск 1762 (обратите внимание, что Mojarra 2.1.0 не не работает на Tomcat / Jetty, используйте хотя бы Mojarra 2.1.1).
По сути, когда Mojarra не удается создать или восстановить представление, оно обычно выдает достаточно конкретное исключение, но из-за этой ошибки позднее в коде неправильно ожидалось допустимое представление, что, в свою очередь, приводит к IllegalArgumentException: null source
. Возможная причина real состояла бы в том, что представление содержит простую синтаксическую ошибку XML, такую как отсутствующий тег или значение неверного атрибута, для которого Мохарра обычно выдавала FaceletException
с очень подробным сообщением с номер строки и положение и т. д.
Чтобы предотвратить ViewExpiredException
, вам необходимо обновить страницу с помощью запроса GET, прежде чем выполнять какие-либо действия с ней. Если вы используете версию Mojarra, где эта ошибка не проявляется (например, 2.0.2 или старше, или 2.1.0 или новее), то вы могли бы изящно обработать ее с <error-page>
in web.xml
на конкретное исключение и предоставить пользовательскую страницу ошибки, на которой конечный пользователь информируется о том, что сеанс истек, вместе со ссылкой на URI начального запроса.