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 :

GWT History - Inhiber les boutons précédents/suivant du navigateur


Sujet :

GWT et Vaadin Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut GWT History - Inhiber les boutons précédents/suivant du navigateur
    Bonjour,

    Je développe une application en utilisant GWT et le client souhaite que les boutons de navigations du navigateur soient inactifs. Je pensais pouvoir m'en sortir avec l'historique GWT mais ce n'est pas le cas.

    L'application doit marcher sur IE6, IE7 et IE8.

    Voici le bout de code que j'ai inséré dans mon entrypoint :

    public class EntryWeb implements EntryPoint, ValueChangeHandler<String> {

    public static final String INIT_STATE = "init_state";

    /**
    * This is the entry point method.
    */
    public void onModuleLoad() {

    initHistoryState();

    ApplicationFacade applicationFacade = ApplicationFacade.getInstance();
    ApplicationFacade.startup(applicationFacade);
    }

    public void initHistoryState(){

    String token = History.getToken();

    if(token.length() == 0){
    onHistoryChange(INIT_STATE);
    }else{
    onHistoryChange(token);
    }
    }

    public void onHistoryChange(String token){
    //implement you logic here.
    }

    @Override
    public void onValueChange(ValueChangeEvent event) {
    onHistoryChange((String)event.getValue());
    }

    }
    Je ne passe jamais dans le onValueChange lorsque que je clique sur le bouton précédent de mon navigateur.

    Merci de votre aide

  2. #2
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    C'est possible, mais ce n'est pas recommandé.

    Pour info, l'expérience utilisateur est amélioré lorsque celui-ci retrouve les fonctionnalités de son navigateur au niveau de son application. Ton application devrait gérer correctement ses boutons en permettant à l'utilisateur de naviguer au travers de ton application correctement.

    Au delà de ca, voici ma réponse technique pour "bloquer" l'historique de navigation :

    Il faut jouer avec History. Au niveau de ton entryPoint tu dois ajouter une entrée dans History qui pointe sur ton appli et qui ne change pas ton écran.

    Lorsque l'utilisateur appuiera sur précédent ou suivant, tu peux ajouter ce lien à chaque fois afin que la navigateur ne fasse que pointer vers ton appli, sans en changer le contenu.

    Ton lien utilisera une encre pour que la page ne se recharge pas.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Sur le principe, ça me parait pas mal, tu as un exemple de code?

    Pour le moment, je n'arrive pas à réagir sur un clic sur les bouton de navigation. Le handler que j'ai mis en place n'est pas appelé.

  4. #4
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Super merci pour la réponse. ça marche presque. Voici le code que j'ai maintenant :

    public void onModuleLoad() {

    initHistoryState();

    ApplicationFacade applicationFacade = ApplicationFacade.getInstance();
    ApplicationFacade.startup(applicationFacade);
    }

    public void initHistoryState(){
    History.newItem(INIT_STATE);

    History.addValueChangeHandler(this);
    }

    @Override
    public void onValueChange(ValueChangeEvent<String> event) {

    String token = event.getValue();
    if (token.equals(INIT_STATE))
    {
    History.newItem(INIT_STATE);
    }
    }
    J'ai deux soucis :
    - j'ai ajouté le token INIT_STATE au démarrage de mon application. Lorsque je clique sur précédent, la méthode onValueChange est bien appelé mais le event.getValue() me renvoie une chaine vide au lieu de "Init_State". Pourquoi? Je vois pourtant bien apparaitre derrière mon URL #Init_State

    - Comment peut-on vider l'historique? car un clic sur précédent va m'activer le bouton suivant alors que je n'en ai pas besoin. De plus, la technique consistant à ajouter un nouvel item à chaque clic me semble dangereuse si l'utilisateur s'acharne à cliquer sur les boutons précédents ou suivant, l'historique va déborder!

    Merci

  6. #6
    Futur Membre du Club
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    J'ai fait quelques modifications qui résoud tous mes problèmes. Pour éviter d'avoir à ajouter à chaque fois un item, je force un forward. Cela me permet d'éviter tout ajout excessif dans l'historique et par la même occasion de ne jamais activer le bouton suivant du navigateur.

    public static final String MAIN_PAGE = "mainpage";

    /**
    * This is the entry point method.
    */
    public void onModuleLoad() {

    initHistoryState();

    ApplicationFacade applicationFacade = ApplicationFacade.getInstance();
    ApplicationFacade.startup(applicationFacade);
    }

    public void initHistoryState(){
    History.newItem(MAIN_PAGE);

    History.addValueChangeHandler(this);
    }

    @Override
    public void onValueChange(ValueChangeEvent<String> event) {

    String token = event.getValue();
    if (!token.equals(MAIN_PAGE))
    {
    History.forward();
    }
    }
    Problème Résolu!

  7. #7
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Au regard de tes lignes de code, tu utilises PureMVC n'est-ce pas

    Quel est ton recul sur ce framework, notamment par rapport à MVP ?

    Merci

  8. #8
    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
    Points : 4 265
    Points
    4 265
    Par défaut
    Pour moi, c'est simple :
    si tu ne veux pas d'historique, n'utilises pas l'historique GWT.

    Par défaut, le back te conduira à la page précédent l'appel de ton application.
    Et tout appel dans ton application ne sera pas mémorisé.

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

Discussions similaires

  1. Pagination et les boutons précédent et suivant
    Par hadeslabs dans le forum MkFramework
    Réponses: 9
    Dernier message: 22/12/2014, 11h21
  2. Focus sur un composant avec les boutons précédent et suivant de Safari
    Par roi_danton dans le forum Développement iOS
    Réponses: 0
    Dernier message: 30/08/2013, 16h30
  3. Réponses: 2
    Dernier message: 12/01/2010, 13h53
  4. Masquer les boutons Précedent/Suivant
    Par Addouna dans le forum Struts 1
    Réponses: 5
    Dernier message: 02/11/2006, 14h38
  5. Réponses: 3
    Dernier message: 23/07/2006, 17h15

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