2010-11-22 2 views
0

Je dois gérer un objet Lien hypertexte dans GWT. Qu'est-ce que j'ai besoin est:GWT - Deux question sur l'hyperlien - Gérer son paramètre de jeton d'historique + l'insérer dans une plage

1 - ajouter dans une travée (comme InlineLabel)

J'ai essayé Hyperlink affitta_3_span_1=new Hyperlink(result.get(i)[0], "");, mais il crée somethings comme ceci:

<div class="affitta_3_span_1"> 
    <a href="#">t1</a> 
</div> 

En fait, je dois ceci:

<span class="affitta_3_span_1"> 
    <a href="#">t1</a> 
</span> 

2 - gérer jeton Histoire Hyperlink

Je mets mes liens internes tels que Hyperlink affitta_3_span_1=new Hyperlink(result.get(i)[1], "article/"+result.get(i)[0]) mais je ne sais pas comment obtenir le paramètre sur jeton lorsqu'ils appellent la fonction onValueChange(). Comment puis-je le faire?

Vive

Répondre

1

Utilisez un Anchor. La sortie est juste une balise <a> qui n'a pas <div>ou<span> autour d'elle, mais si vous avez besoin d'un <span> vous pouvez l'ajouter avec un panneau HTML.

Pour définir une URL accessible à l'historique, placez simplement un # au début. Quelque chose comme

myAnchor.setText(result.get(i)[1]); 
myAnchor.setUrl("#article/"+result.get(i)[0]); 

Maintenant, lorsque vous cliquez sur MonAncre, onValueChange sera transmis le jeton "article/whatever". L'effet secondaire regrettable est que vos URL ressemblent à http://example.com/#article/whatever, mais c'est le seul moyen d'obtenir le jeton à l'objet History avec seulement GWT.

+0

Uhm ... ok! Cette stratégie semble fonctionner avec Hyperlink aussi! Je ne comprends pas comment choisir le paramètre sur ma valeur de jeton quand j'utilise getToken de onValueChange. J'ai besoin d'une sorte de stringtokenizer? – markzzz

+0

Oui, vous avez besoin d'un tokenizer de chaîne ou d'un autre mécanisme qui transforme "article/whatever" en quelque chose de significatif pour votre application. –

+0

Ah ok. J'espère que GWT donnera une autre méthode (avec vérification/validation des paramètres, etc.). Ok, je vais faire ma propre fonction pour ça :) Avec votre expérience: vous suggérez d'utiliser Anchor ou Hyperlink? – markzzz

0

Si vous avez seulement besoin d'un clickHandler sur votre lien et aucun soutien de l'histoire, vous pouvez utiliser le widget Anchor, qui est basé sur une étiquette <a> qui a display: inline par défaut.

+0

Ehm, oui ... j'ai besoin du support de l'histoire :) – markzzz

1

Pour la première question, utilisez un Anchor car il est en ligne. Pour la seconde, vous devez 'écouter' les événements de changement d'historique en étendant ValueChangeHandler et en appelant History.addValueChangeHandler(this); dans votre classe. Par exemple,

class MyClass implements ValueChangeHandler<String> { 
    public MyClass { 
    ... 
    History.addValueChangeHandler(this); 
    } 

    @Override 
    public void onValueChange(ValueChangeEvent<String> event) { 
    String token = event.getValue(); 
    if (token.equals("foo")) { 
     // go to one page 
    } else if token.equals("bar")) { 
     // go to another page 
    } 
    } 
} 
Questions connexes