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

Struts 1 Java Discussion :

Utilisation du jeton [FAQ]


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 240
    Par défaut Utilisation du jeton
    dans une application Struts, après avoir valider une page contenant un formulaire ... un page de résultat s'affiche
    Problème : un certain temps s'écoule entre l'affichage des 2 pages (si les champs du formulaire sont valides)

    donc l'utilisateur peut etre tenter de valider à nouveau le formulaire ou rafraichir de la page

    mon but étant que si l'utilisateur effectue l'une des 2 actions ci-dessus, celle-ci ne soit pas prise en compte puisque le serveur est déjà en train de traiter le 1er post, et donc je souhaite simplement attendre la page résultat du 1er post ...

    je pense utiliser resetToken(), isTokenValid(), saveToken() mais je ne sais pas trop comment les positionner dans le corps de la méthode execute() de l'action qui post le formulaire ... et obtenir l'effet escompté !

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Tu peut effectivement faire comme ça, mais c'est compliqué.

    Deux solution simple sont :
    - utilisation du javascript pour désactiver ton bouton submit pour éviter que l'utilisateur clique deux fois dessus.
    - utilisation juste d'un boolean isProcessed pour dire que l'action est en cours (pas besion d'un véritable jeton si tu n'as pas plusieurs processus qui se suivent, un jeton étant pour faire de l'ordonnancement de processus)

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 240
    Par défaut
    bonjour,

    merci pour le réponse
    je ne souhaite pas utiliser la 1ère solution : désactivation java script du bouton de validation
    par contre pour la 2ème solution : peux tu détailler svp ? à savoir :
    - où (ré-)initialiser la variable boolean isProcessed ?
    - dans la méthode execute() de l'action, que renvoyer comme ActionForward si isProcessed est à true ? (c'est à dire que le 1er post a déjà été fait et qu'on attend l'affichage de la page résultat)

  4. #4
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Ce que je ne comprend pas, c'et pourquoi tu veut réinitialiser la variable, doit tu faire un traitement cyclique?

    Le problème du que renvoyé dans ton action est effectivement génant : une requête s'effectue dans un thread, donc en rechargeant la page, l'utilisateur arrive dans une autre requête et donc n'aurra plus accés à la requête d'avant qui sera perdue.

    Seul le javascript te permet d'empecher deux click sur un bouton, à partir du moment où l'utilisateur clique deux fois sur un bouton (ou pire, recharge une page qui lance un traitement), c'est foutue, tu ne pourra plus retourner sur l'action précédente.

    Donc, le plus simple c'est de rediriger vers une page de confirmation ou quelque chose dans ce style. Ne sachant pas exactement ce que tu veut fair eje e peut t'aider plus.

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 240
    Par défaut
    ce type de situation ne me parait pas exceptionnel :

    le formulaire envoie une demande d'autorisation de prélèvement (avec un certain montant) à la banque via un site marchand et un réponse d'acceptation ou de refus est retournée au client :
    browser client <-> site marchand <-> banque

    le temps écoulé entre la demande et la réponse est de quelques secondes ...
    et donc si l'utilisateur valide une 2ème fois le formulaire (ou rafraichit la page en cours), le risque est qu'il y est un 2ème prélèvement (du même montant), etc ...


    c'est bien évidemment exclu !!!
    la solution javascript ne me parait pas fiable, une solution côté serveur me parait plus appropriée

  6. #6
    Membre émérite
    Avatar de yolepro
    Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mai 2002
    Messages : 918
    Par défaut
    Dans le cas :

    browser client <-> site marchand <-> banque

    Il semble logique de passer par un bloquage coté base. car la session peut etre traitre ( un simple Ctrl+N peu te faire plein de surprise).
    utilises donc deux champs suplémentaires (isValide, isSolded).
    le premier est mis a true lors du premier clique, le deuxieme lors du paiement.

    Le javascript est une bonne solution pour "éviter" que l'utilisateur ne le fasse malencontreusement, mais cela n'est effectivement pas suffisant.

Discussions similaires

  1. On ne peut plus utiliser les jetons ?
    Par fant354684 dans le forum IGN API Géoportail
    Réponses: 3
    Dernier message: 10/10/2012, 23h58
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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