Bonsoir à vous,
Dans le cadre d'une appli web dans laquelle les utilisateurs sont invités à s'inscrire, et ensuite à activer leur compte en cliquant sur un lien dans un email qui leur a été envoyé, je tombe sur le problème du passage de paramètre en GET.
En fait le vrai problème n'est pas le passage de paramètres en GET. Ni même la technique pour les récupérer.
Le vrai problème c'est "Quand les récupérer ?"
Si un utilisateur appelle une url avec des paramètres dedans, la page est rendue et c'est terminé. Le développeur n'a pas eu de réelle opportunité de réaliser un traitement avec les paramètres de l'url avant de rendre la page.
Dans le cas d'une validation de compte (comme pour moi par exemple), on souhaite qu'il n'y ait pas d'autre intervention de l'utilisateur que le clic dans sa boite mail.
La solution la plus propre que j'ai trouvée à mon problème est d'utiliser un PhaseListener. Mais ça me semble être une usine à gaz.
Le fonctionnement est basé sur une déclaration des paramètres à rechercher.
Les paramètres en question sont définis dans un fichier de config. Ils sont associés à un nom, un managed bean (qui doit être déclaré dans le faces-config.xml), une méthode.
La méthode accepte un paramètre de type String (qui sera le contenu du paramètre trouvé dans l'url).
Le phase listener regarde si un ou des paramètres déclarés dans le fichier de config sont présents dans la request parameter map.
Si le paramètre est présent dans la request parameter map, la méthode donnée est appelée sur le managed bean donné.
Cette façon de fonctionner vient d'ici
Ca fonctionne bien et ça répond à ma demande, mais je trouve ça lourd et pas super propre comme façon de configurer le truc. Il y a peut-être moyen de faire plus propre avec Spring pour la configuration.
Depuis le temps que cette problématique est apparue, y a-t-il des solutions plus "standard" pour traiter ce genre de cas avec les JSF ?
Partager