2016-06-30 12 views
0

Ich habe meine Webanwendung von Wicket 1.4 auf 6.21 migriert.Wicket 6 PageParameters leer in Chrome und Opera

Alles funktioniert gut in Firefox, aber in anderen Browsern (getestet in Chrome und Opera) auf einigen Seiten SeitenParameter sind leer.

Ich überprüft POST-Anfragen und sieht gleich auf jedem der genannten Browser. Die Adressen in jedem Browser sind ebenfalls identisch und enthalten den Parameter, den ich verwenden möchte.

Mein Konstruktor:

public MyPage(PageParameters params) { 
    super(params); 
    id = params.get(ID_PARAM).toInteger(); 
    // do stuff; 
} 

Ursachen (natürlich):

java.lang.NumberFormatException: null 

Mein Wissen über Wicket ist eher begrenzt, aber App auf Firefox ist wirklich gut funktioniert, so will ich es laufen auf Chrome auch.

Alle Antworten oder sogar Ratschläge, was ich überprüfen sollte, sind sehr willkommen. Natürlich kann ich einige zusätzliche Details und Code zur Verfügung stellen.

EDIT:

Hier ist Screenshot von POST auf Chrome (auf dem Server PageParameters leer sind): POST screenshot on Chrome

Während das Debuggen ich wirklich seltsame Verhalten auftreten. Auf MyPage gibt es AcceptButton, die zu AnotherPage umleitet.

Mit Firefox klicken AcceptButton Ergebnisse Eingabe AcceptButton#onSubmit Methode, die setResponsePage(AnotherPage, params) ruft.

Mit Chrome klicken AcceptButton Ergebnisse Eingabe MyPage() Konstruktor ohne Eingabe AcceptButton#onSubmit noch AcceptButton#onError, so irgendwie versucht es reload MyPage.

+0

Wenn Sie dies in einer Demo-Anwendung reproduzieren können, erstellen Sie bitte ein Ticket unter https://issues.apache.org/jira/browse/WICKET und wir werden debuggen! Ich sehe keinen Grund, warum es in Chrome nicht funktioniert. Überprüfen Sie in den Dev Tools von Chrome, ob tatsächlich die POST-Parameter gesendet werden. –

+0

@ martin-g Ich habe einen Screenshot der POST-Anfrage von Chrome zur Verfügung gestellt. Aufgrund leerer PageParameters wird auf die Fehlerseite (als Antwort) umgeleitet. Vielleicht werde ich versuchen, ein Demo zu erstellen, um es zu reproduzieren, aber es wird wahrscheinlich einige Tage dauern. – xnor

Antwort

0

Ich habe keine Ahnung, warum Firefox funktioniert, aber im angehängten Bild können wir sehen, dass dies eine Ajax Anfrage ist, so sollte es überhaupt nicht zu MyPage Konstruktor gehen.

Die Ajax-Anfrage richtet sich gegen AcceptButton (ein AjaxButton, denke ich), so dass die Post-Parameter in AcceptButton#onSubmit(AjaxRequestTarget, Form) mit getRequest().getPostParameters() gelesen werden konnten.

Vielleicht leiten Sie mit setResponsePage() oder ähnlichem auf MyPage um, aber die Ajax-Anforderungsparameter werden in diesem Fall nicht automatisch an die PageParameters der Seite weitergeleitet.

+0

Ich habe meine Beschreibung aktualisiert. Firefox gibt in der Tat "AcceptButton # onSubmit" ein und leitet über 'setResponsePage()' weiter, aber Chrome gibt nicht einmal den 'onSubmit', sondern den' MyPage() 'Contructor ein. – xnor

Verwandte Themen