java.lang.IllegalArgumentException: нулевой источник - PullRequest
9 голосов
/ 25 января 2011

У нас есть приложение, которое использует JSF2 и Spring.Приложение отлично работает при развертывании.Но это происходит, если я прошел следующие шаги:

  1. Откройте страницу входа в приложение.
  2. Повторно развернуло приложение на сервере.
  3. Пытался войти в систему, используя ранее открытую страницу входа, и он показывает следующее исключение:

    javax.servlet.ServletException: null source
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:321)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    
    root cause
    
    java.lang.IllegalArgumentException: null source
        at java.util.EventObject.<init>(EventObject.java:38)
        at javax.faces.event.SystemEvent.<init>(SystemEvent.java:67)
        at javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:69)
        at javax.faces.event.PostRestoreStateEvent.<init>(PostRestoreStateEvent.java:69)
        at com.sun.faces.lifecycle.RestoreViewPhase.deliverPostRestoreStateEvent(RestoreViewPhase.java:256)
        at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:245)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
        at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:107)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
    

Если я нажму на первую страницу входа изатем введите данные для входа в приложение, не ломается.Это происходит только в том случае, если я пытаюсь использовать ранее загруженную страницу входа в систему с недавно развернутым приложением.

Кто-нибудь знает ответ?

Ответы [ 4 ]

13 голосов
/ 25 января 2011

Этот должен был быть брошен как 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 начального запроса.

3 голосов
/ 28 ноября 2012

Пока javax.faces.PARTIAL_STATE_SAVING установлено на false , вы получите java.lang.IllegalArgumentException . Если вы установите javax.faces.PARTIAL_STATE_SAVING на true (и вы знаете, что делаете), вы получите «старый добрый» javax.faces.application.ViewExpiredException назад.

3 голосов
/ 22 марта 2012

Это выглядит как http://java.net/jira/browse/JAVASERVERFACES-1758

что не исправлено в Мохарре 2.1.x

0 голосов
/ 28 сентября 2015

В моем случае оказалось, что у меня отсутствует конечный тег в файле xhtml для одного из вызовов jstl. я использовал тэг выбора, и у одного из тегов между ними не было конечного тэга

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...