Ich habe eine Java-Anwendung mit dem Apache Wicket 6.x; manchmal wird die Ausnahme StalePageException wie unten beschrieben ausgelöst und erscheint im Protokoll. Da jedoch keine Rückmeldung an den Benutzer erfolgt, verhält sich die Anwendung unerwartet und verursacht Frustration.Apache Wicket: Eine Fehlermeldung wird angezeigt, wenn StalePageException auftritt
Wie kann ich die StalePageException erfassen und eine Meldung an den Benutzer (vorzugsweise mit einem Feedback-Panel) zur Erläuterung der Situation?
Öffnen Sie eine Stateful-Seite in einem Tab/Fenster, kopieren Sie die URL aus der Adressleiste und öffnen Sie sie in einem neuen Tab/Fenster. Gehen Sie dann zurück zum ersten Register/Fenster und versuchen Sie, auf einen beliebigen Stateful-Link zu klicken. Dies führt zu StalePageException.
Es wird ausgelöst, da Wicket erkennt, dass dieselbe Seiteninstanz zwischen dem Rendern der aktuellen Seite und dem Klick auf der Verknüpfung gerendert wurde. Wicket tut dies, weil es nicht sicher ist, ob es Änderungen in der Seitenbaumhierarchie zwischen dem anfänglichen Rendering und dem Klickereignis gibt . Es ist sogar möglich, dass dieser Link nicht mehr in der letzten Version der Seite vorhanden ist, so dass dieser Klick zu ComponentNotFoundException führen kann, wenn StalePageException nicht früher ausgelöst wird.
StalePageException führt nur zum Rendern der aktuellen Seite. So wird der Benutzer die letzte Version der Seite sehen und (s) er muss klicken Sie den Link erneut.