java.lang.IllegalArgumentException: Nullquelle

8

Wir haben eine Anwendung, die JSF2 und Spring verwendet. Die Anwendung funktioniert ordnungsgemäß, wenn sie bereitgestellt wird. Aber das passiert, wenn ich die folgenden Schritte durchlaufe:

  1. Öffnen Sie die Anmeldeseite der Anwendung.
  2. Die Anwendung auf dem Server erneut bereitgestellt.
  3. Es wurde versucht, sich über die zuvor geöffnete Anmeldeseite anzumelden, und die folgende Ausnahme wird angezeigt:

    %Vor%

Wenn ich auf die erste Login-Seite klicke und dann die Login-Daten eingebe, bricht die Anwendung nicht ab. Dies tritt nur auf, wenn ich versuche, die zuvor geladene Anmeldeseite mit der neu bereitgestellten Anwendung zu verwenden.

Weiß jemand die Antwort?

    
Ikthiander 25.01.2011, 10:37
quelle

4 Antworten

13

Dieser sollte als ViewExpiredException geworfen werden. Es ist ein Bug, der sich in Mojarra 2.0.3 manifestiert und in Mojarra 2.1.0 behoben wurde. Siehe auch Problem 1762 (beachten Sie, dass Mojarra 2.1.0 funktioniert nicht auf Tomcat / Jetty, verwende mindestens Mojarra 2.1.1.

Grundsätzlich, wenn Mojarra die Ansicht nicht erstellen oder wiederherstellen kann, wird normalerweise eine Ausnahme mit ausreichendem Wert ausgegeben, aber aufgrund dieses Fehlers wurde später fälschlicherweise eine gültige Sicht im Code erwartet, die wiederum in IllegalArgumentException: null source resultiert. Die mögliche echte Ursache wäre gewesen, dass die Ansicht einen einfachen XML Syntaxfehler enthält, wie zB ein fehlendes Tag oder einen defekten Attributwert, für den Mojarra normalerweise eine FaceletException mit einer sehr detaillierten Nachricht geworfen hätte mit Zeilennummer und Position und so.

Um das ViewExpiredException zu verhindern, müssten Sie die Seite mit einer GET-Anfrage aktualisieren, bevor Sie irgendwelche Aktionen ausführen. Wenn Sie eine Mojarra-Version verwenden, in der sich dieser Fehler nicht manifestiert (z. B. 2.0.2 oder älter oder 2.1.0 oder neuer), können Sie ihn mit einem <error-page> in web.xml für die bestimmte Ausnahme und Bereitstellung einer benutzerdefinierten Fehlerseite, auf der der Endbenutzer informiert wird, dass die Sitzung abgelaufen ist, sowie eine Verknüpfung zum ursprünglichen Anforderungs-URI.

    
BalusC 25.01.2011, 12:15
quelle
4

Solange javax.faces.PARTIAL_STATE_SAVING auf false festgelegt ist, erhalten Sie die java.lang.IllegalArgumentException . Wenn Sie javax.faces.PARTIAL_STATE_SAVING auf true setzen (und Sie wissen, was Sie tun), erhalten Sie die "gute alte" javax.faces.application. ViewExpiredException zurück.

    
Manuel 28.11.2012 13:14
quelle
3

Dies sieht wie Ссылка

aus

Das ist nicht in Mojarra 2.1.x behoben

    
Roger Keays 22.03.2012 19:00
quelle
-1

In meinem Fall stellte sich heraus, dass ich das End-Tag in der xhtml-Datei für einen der jstl-Aufrufe nicht gefunden hatte. Ich benutzte choose-Tag und einer der When Tags dazwischen haben kein End-Tag

    
Masoud 28.09.2015 01:24
quelle

Tags und Links