Gestion du double clic avec Struts

La problématique du double clic peut se poser dans les applications Web, notamment en ce qui concerne l'écriture en base de données.
Javascript & JQuery offre des solutions permettant de bloquer le double-clic mais la désactivation de l'exécution du Javascript les rend totalement inefficace.
Struts offre un mécanisme de jeton permettant de s'assurer de la validité de la requête HTTP exécutée.

La classe org.apache.struts.action.Action possède un attribut token de la classe org.apache.struts.util.TokenProcessor.

/**
 * The singleton instance of this class.
 */
private static TokenProcessor instance = new TokenProcessor();

La classe Action offre des méthodes permettant de générer/sauvegarder un jeton dans la requête HTTP puis à la validation d'un formulaire de vérifier si le jeton est valide.

Afin de générer/sauvegarder le jeton, il faut faire appel à l'instruction suivante:

this.saveToken(httpServletRequest);

Dans le formulaire HTTP, Struts place un attribut caché pour sauvegarder la valeur du jeton:

<div><input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="0a31c8857345ac4cd4177fcfde8d4da6"></div>

Enfin dans l'instance héritant de la classe Action qui traite la requête HTTP issue de la soumission du formulaire, il suffit d'utiliser l'instruction suivante pour vérifier si le jeton est valide:

if(this.isTokenValid(httpServletRequest, true))   {
    ...
}

le boolean passé en paramètre permet de remettre à zéro ou non le jeton, c'est-à-dire le consommer ou non. Si la valeur passée est true, la requête HTTP ne pourra être traitée qu'une fois pour une valeur du jeton donné.

2 commentaires

  1. il y a encore des clients qui désactivent javascript dans leur navigateur ? (et encore des développeurs qui utilisent struts ?)

  2. Non seulement, il y a encore des personnes qui désactivent Javascript, mais il y a même encore plus de personnes pour qui le Javascript a été désactivé sans qu’ils demandent quoi que ce soit à personne. De plus le fait de supporter que JS soit désactivé est un impératif RGAA, donc à prendre en compte obligatoirement.

    Strut est depuis longtemps en perte de vitesse. Que des applications aient comme dette technique de continuer à l’utiliser n’est pas un argument significatif.

    Benoît

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.