
Envoyé par
cocula
Dans ce cas, c'est il s'agit d'une exception et non d'une erreur.
Je m'explique :
Si ton utilisateur est entré sur une des pages de ton appli c'est que l'intranet lui en a donné la possibilité. Il est de la responsabilité de l'intranet d'authentifer ton utilisateur ou de ne pas lui montrer le lien vers ton appli si celui ci n'y est pas autorisé. Donc, si on accède à l'appli est que l'on est pas authentifié, c'est un cas d'exception à traiter comme tel, c'est à dire en renvoyant ServletException.
J'ai déjà fait ce genre de truc en intégrant une appli dans un portail JSR168.
Bon, si vraiment, tu comptes afficher une page d'erreur, je ne vois pas l'utilité de placer en request des ActionErrors. Les ActionErrors doivent être manipulées par les action (comme leur nom l'indique) dans la philosophie de Struts. Elles servent surtout à distinguer les notions d'erreurs globales et d'erreurs associées à une propriété du formulaire.
Dans ton cas, il suffit de rediriger l'utilisateur sur une bête page qui affiche un message à l'aide d'un <bean:message>.
Autre question : pourquoi choisir de surcharger la méthode processRoles pour s'assurer que l'utilisateur est bien authentifié ?
En effet, il serait peut être plus judicieux de surcharger processActionPerform qui renvoie un ActionForward afin que ce forward soit vraiment traiter par la suite.
processRoles ne fait que générer une erreur HTTP ce qui est en contradiction avec ton besoin de montrer une page à toi.
Enfin je ne suis même pas certain que c'est dans le requestProcessor que tu as intérêt à effectuer le contrôle. Est-ce que ce ne serait pas mieux en intercalant un filtre de servlet dans le cas où ton appli est appelée dans le cadre de ton intranet. Ce qui permettrait éventuellement deux comportements différents selon que ton appli fonctionne en mode autonome ou en mode intranet.
En surchargeant le requestProcessor, il faut bien penser que tu va être emmerdé si tu upgrade Struts.
Partager