2010-07-29 6 views
4

Je parcours des données et génère des URL paramétrées pour des liens (vers la même page, mais avec des paramètres) sur une application de tableau de bord. Cependant, la façon dont je le fais nécessite une actualisation de la page lorsque l'utilisateur clique sur le lien.Mise à jour de l'URL sans actualisation

URL Génération avec un StringBuilder

Detailhtml.append("<a href=\"http://" + domain + "&service=" + count +"&day=" + day +"\"><img src=\"/info.jpg\" alt=\"Info\"/>"); 

Est-il possible que je peux créer dynamiquement des boutons GWT, ou déclencher une javascript pour ajouter les paramètres sans rafraîchir la page?

Toute aide serait grande ...

Répondre

5

La page sera actualisée si une partie de l'URL avant que les modifications de fragments (n). Donc, si vous allez au format foo.com # a à foo.com/?bar=baz#a, une actualisation de page sera déclenchée.

La meilleure façon de contourner cela est de ne jamais rien changer avant le fragment. Remplacez foo.com/?bar=baz par foo.com/#bar=baz (ou une variante) et demandez à votre application GWT d'écouter les modifications History en appelant le History.addHistoryListener(...). Puis, lorsque vous entendez un changement d'historique, analysez le fragment dans l'URL et mettez à jour votre application en conséquence.

Certaines bibliothèques comme gwt-platform fournissent un wrapper autour de cette fonctionnalité et vous permettent de décrire Place qui seront déclenchées lorsque le fragment sera mis à jour pour les faire correspondre. Si vous finissez par faire beaucoup de choses compliquées avec le fragment, ce serait une bonne idée de regarder dans les endroits. Mais si vous ne faites que passer quelques paramètres, vous pouvez vous contenter d'écouter les changements History.

+0

Super Jason, je ne le savais pas. Donc, pour que cela fonctionne, je dois insérer un # dans mon URL quand il est chargé pour la première fois? – tpow

+2

Pas quand il est chargé - quand vous voulez ajouter/changer quelque chose dans l'url. Pour un exemple, voir comment GMail change son URL en fonction des changements d'état. –

+0

Igor a raison. Bien que vous puissiez * charger * la page aveC# foo = bar et la gérer lorsque votre code GWT se charge, si vous voulez qu'il soit chargé dans cet état. Mais vous devez vous assurer que votre URL #less fonctionne toujours. –

Questions connexes