Wie ändere ich die Wicket URL bookmarkablePage Structure?

Wie ändere ich die Wicket URL bookmarkablePage Structure?

Problem

Standardmäßig ist die von Wicket generierte URL schlecht, lang und hässlich und enthält den vollständig qualifizierten Klassennamen der Seite. Es sieht ungefähr so ​​aus:

http://localhost:8080/example?wicket:bookmarkablePage=:com.example.page.ResultPage&url=google.com

Note
Was zum Teufel ist "wicket:bookmarkablePage" in der URL und warum hat Wicket eine so hässliche URL-Struktur generiert? Nach der Bereitstellung der Wicket-Anwendung auf der Client-Site werden die E-Mails vieler Kunden gesendet und Beschwerden über die hässliche bookmarkablePage-URL-Struktur eingereicht. Es klingt nur verkabelt und macht überhaupt keinen Sinn. Was sind die Vorteile davon? Bitten Sie meinen Besucher, diese hässliche URL-Adresse mit einem Lesezeichen zu versehen.

Lösung

Glücklicherweise bietet Wicket die Funktion "URL mounting", um die hässlichen, mit Lesezeichen versehenen URL-Seiten auf einen bestimmten Pfad in unserer Anwendung zu verbergen.

Um dies zu beheben, ändern Sie die standardmäßige hässliche URL-Struktur in der Wicket-Anwendungsklasse "init()" wie folgt

import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.target.coding.QueryStringUrlCodingStrategy;
import com.example.user.SuccessPage;

public class WicketApplication extends WebApplication {

    @Override
    protected void init() {
        super.init();
        mount(new QueryStringUrlCodingStrategy("result",ResultPage.class));
    }
}

VerwendetQueryStringUrlCodingStrategy(), um die Seite "ResultPage.class" in eine ordentliche und benutzerfreundliche URL-Struktur "result" einzubinden, siehe Ausgabe:

http://localhost:8080/example/result?url=google.com