IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

[1.7.0] Lien externe


Sujet :

GWT et Vaadin Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut [1.7.0] Lien externe
    Bonjour,

    Je cherche à faire un lien externe.

    Si j'ai bien compris, l'HyperLink permet de faire des liens intra-application. Or je veux juste un lien qui me renvoie vers un autre site du type :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.monsite.com/">Mon site</a>

    Donc un hyperlien très basique. Pour ça, j'ai trouvé l'objet DOM suivant :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LinkElement lien = Document.get().createLinkElement();
    lien.setHref("http://www.monsite.com/");
    lien.setInnerText("Mon site");

    Bon déjà quand je fais le setInnerText(...), j'ai le droit à ceci :
    Citation Envoyé par Exception levée
    [ERROR] Unable to load module entry point class fr.societe.projet.client.MonEntryPoint (see associated exception for details)
    com.google.gwt.core.client.JavaScriptException: (Error): Erreur d'exécution inconnue
    number: -2146827688
    description: Erreur d'exécution inconnue
    at com.google.gwt.dom.client.DOMImplTrident.setInnerText(Native Method)
    at com.google.gwt.dom.client.Element$.setInnerText$(Element.java:450)
    at fr.societe.projet.client.modules.Identification.<init>(Identification.java:57)
    at fr.societe.projet.client.MonEntryPoint.onModuleLoad(MonEntryPoint.java:16)
    La ligne 57 de Identification étant le setInnerText(...) bien sûr...

    Si je met le setInnerText(...) en commentaires, ça passe.

    Je n'arrive pas à faire apparaître cet élément à un autre de type UI :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FlexTable table = new FlexTable();
    table.setHTML(0, 0, lien.getString());
    table.setHTML(0, 1, lien.toString());
    table.setText(1, 0, lien.getString());
    table.setText(1, 1, lien.toString());

    Et aucune des cases ne s'affiche (oui oui, le tableau s'affiche par contre lui !).

    Savez-vous comment faire un lien externe ?
    Savez-vous pourquoi le setInnerText(...) ne fonctionne pas ?
    Savez-vous pourquoi mon lien ne veut pas s'afficher ? Est-ce à cause du fait qu'il n'a pas de texte justement ?
    Avez-vous une solution ?

    C'est pourtant pas très compliqué comme problème

    Merci de votre aide !

    [EDIT]
    J'ai bien trouvé ceci :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    HTML lien = new HTML("<a href=\"http://www.monsite.com\">Mon site</a>");
    Mais le but serait d'éviter d'écrire du HTML pur
    [/EDIT]

  2. #2
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    En fait ça n'apparaissait pas parce que j'avais fait une connerie. Et pour l'instant je ne trouve pas d'autre solution que d'utiliser l'élément HTML.

    J'ai donc fait ceci :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import com.google.gwt.user.client.ui.HTML;
     
    public class ExternalLink extends HTML {
    	public ExternalLink (String address) {
    		this(address, address);
    	}
     
    	public ExternalLink (String address, String text) {
    		super("<a href='"+address+"' target='_blank'>"+text+"</a>");
    	}
    }

    Et comme ceci dans ma classe Identification :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ExternalLink lien = new ExternalLink("http://www.monsite.com/", "Mon site");
     
    FlexTable table = new FlexTable();
    table.setWidget(0, 0, lien);

    Le problème est que http://www.monsite.com/ est visiblement blacklisté par défaut. Je ne sais pas trop comment procéder pour enlever ce blacklistage Any idea ?

  3. #3
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Le plus simple pour les liens, c'est d'utiliser :

    http://google-web-toolkit.googlecode...Hyperlink.html

  4. #4
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Par défaut
    Citation Envoyé par BiM Voir le message
    Bonjour,

    Je cherche à faire un lien externe.

    Si j'ai bien compris, l'HyperLink permet de faire des liens intra-application. [...]
    Citation Envoyé par benwit Voir le message
    Le plus simple pour les liens, c'est d'utiliser :

    http://google-web-toolkit.googlecode...Hyperlink.html
    Alors j'ai mal compris ?
    Comment fait-on un lien externe avec un HyperLink ?

  5. #5
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Lien interne, lien externe : même combat !

    Hyperlink repose sur la balise html ancre <a href=""></a> et offre donc les mêmes services.

    • setText() permet de définir le texte dans la balise <a>
    • setHtml() permet de définir le contenu html dans la balise <a>


    et pour le href me demandera tu ?

    Pour les liens internes, c'est comme en html avec href="#xxx", d'ailleurs c'est ce que fait la méthode setTargetHistoryToken()

    et pour les liens externes me demanderas tu ? comment je modifie le href ?

    Ben, tu ne peux pas directement et cela se comprend :
    En html,
    • soit tu change le contenu de la page courante avec le document qui se trouve à l'url donnée dans le href
    • soit tu fait un lien interne (cela revient au href="#xxx")
    • soit tu execute un code javascript pour faire comme un bouton et tu écris href="javascript:fff";


    En GWT, le composant Hyperlink va au plus fin pour pouvoir faire ces trois truc donc l'utilisation de addClickHandler() va te permettre de définir le traitement que tu souhaites réaliser et il est fort probable qu'il fabrique un code href="javascript:fff" à la compilation.
    Je n'ai pas essayé mais du coup, on comprend que pour un même lien, tu ne peux pas utiliser à la fois le lien interne (href="#xxx") et l'évènement ClickEvent (href="javascript:fff")

    Une fois ceci dit, tu fais comme si en html, tu ne pouvais utiliser que href="javascript:fff").
    Pour changer le contenu de ta page, tu changerai l'url de la fenêtre avec un window location.
    Là, c'est pareil, tu fais un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     public void onModuleLoad()
        {
            Hyperlink link = new Hyperlink();
            link.setText("Aller sur developpez");
     
            link.addClickHandler(new ClickHandler()
            {
                @Override
                public void onClick(ClickEvent event)
                {
                    Window.Location.replace("http://www.developpez.com");
                }
            });
     
            RootPanel.get().add(link);
        }
    Remarques :
    • Le style peut être modifié par les css.

    • Le message d'avertissement contre les attaques potentielles XSS peuvent être désactivées en ajoutant ton lien dans la liste blanche en paramètre du compilateur GWT (onglet arguments) :
      Pour mon exemple :
      -whitelist "^http[:][/][/]www[.]developpez[.]com"
      (NB: si la whitelist est absence, il te met dans la console le pattern de l'url)

    • Pour ouvrir le document dans une nouvelle fenêtre, comme en Javascript mais avec l'équivalent GWT :
      Window.open("http://www.developpez.com", "Developpez", "");
    • Cela peux paraître un peu "lourd" pour un simple lien mais la philosophie de GWT n'est pas de changer de vue en passant d'une page à l'autre mais de modifier la page courante, donc de modifier qu'une partie et là, les listeners/event apportent beaucoup de souplesse.

  6. #6
    BiM
    BiM est déconnecté
    Expert confirmé
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Liens externe] Comment utiliser extern
    Par max44410 dans le forum C++Builder
    Réponses: 6
    Dernier message: 03/06/2005, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo