Comment changer la structure de bookmarkablePage de l'URL du guichet?
Problème
Par défaut, l'URL générée par Wicket est nulle, longue et moche, et contient le nom de classe complet de la page. Cela ressemble à quelque chose comme ceci:
http://localhost:8080/example?wicket:bookmarkablePage=:com.example.page.ResultPage&url=google.com
Note
Que diable est «wicket:bookmarkablePage» dans l'URL, et pourquoi Wicket a généré une structure d'URL aussi moche? Après avoir déployé l'application Wicket sur le site client, de nombreux e-mails de clients ont été envoyés et se sont plaints de la mauvaise structure d'URL de bookmarkablePage. C'est juste un son câblé et cela n'a aucun sens, quels sont les avantages de cela? Allez-vous demander à mon visiteur de mettre en signet cette vilaine adresse URL ?.
Solution
Heureusement, Wicket fournit la fonction «URL mounting» pour masquer les pages de signets URL laides vers un chemin spécifique dans notre application.
Pour résoudre ce problème, modifiez la structure d'URL laide par défaut dans la classe d'application Wicket, méthode «init()», comme suit
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)); } }
UtiliseQueryStringUrlCodingStrategy() pour monter la page «ResultPage.class» sur une structure d'URL claire et conviviale «result», voir la sortie:
http://localhost:8080/example/result?url=google.com