Struts 2 - Résultats et types de résultats

Comme mentionné précédemment, le <results> tag joue le rôle d'un viewdans le framework Struts2 MVC. L'action est responsable de l'exécution de la logique métier. L'étape suivante après l'exécution de la logique métier consiste à afficher la vue à l'aide du<results> marque.

Souvent, certaines règles de navigation sont jointes aux résultats. Par exemple, si la méthode d'action consiste à authentifier un utilisateur, il existe trois résultats possibles.

  • Connexion réussie
  • Connexion infructueuse - Nom d'utilisateur ou mot de passe incorrect
  • Compte bloqué

Dans ce scénario, la méthode d'action sera configurée avec trois chaînes de résultat possibles et trois vues différentes pour rendre le résultat. Nous l'avons déjà vu dans les exemples précédents.

Mais Struts2 ne vous oblige pas à utiliser JSP comme technologie d'affichage. Après tout, le but du paradigme MVC est de garder les couches séparées et hautement configurables. Par exemple, pour un client Web2.0, vous souhaiterez peut-être renvoyer XML ou JSON comme sortie. Dans ce cas, vous pouvez créer un nouveau type de résultat pour XML ou JSON et y parvenir.

Struts est livré avec un certain nombre de result types et tout ce que nous avons déjà vu était le type de résultat par défaut dispatcher, qui est utilisé pour envoyer aux pages JSP. Les Struts vous permettent d'utiliser d'autres langages de balisage pour la technologie d'affichage afin de présenter les résultats et les choix populaires incluentVelocity, Freemaker, XSLT et Tiles.

Le type de résultat Dispatcher

le dispatchertype de résultat est le type par défaut et est utilisé si aucun autre type de résultat n'est spécifié. Il est utilisé pour transférer vers un servlet, une JSP, une page HTML, etc. sur le serveur. Il utilise la méthode RequestDispatcher.forward () .

Nous avons vu la version "abrégée" dans nos exemples précédents, où nous avons fourni un chemin JSP comme corps de la balise de résultat.

<result name = "success">
   /HelloWorld.jsp
</result>

Nous pouvons également spécifier le fichier JSP en utilisant une balise <param name = "location"> dans l'élément <result ...> comme suit -

<result name = "success" type = "dispatcher">
   <param name = "location">
      /HelloWorld.jsp
   </param >
</result>

Nous pouvons également fournir un parseparamètre, qui est vrai par défaut. Le paramètre d'analyse détermine si le paramètre d'emplacement sera analysé pour les expressions OGNL.

Le type de résultat FreeMaker

Dans cet exemple, nous allons voir comment nous pouvons utiliser FreeMakercomme la technologie de vue. Freemaker est un moteur de création de modèles populaire utilisé pour générer une sortie à l'aide de modèles prédéfinis. Créons maintenant un fichier de modèle Freemaker appeléhello.fm avec le contenu suivant -

Hello World ${name}

Le fichier ci-dessus est un modèle où nameest un paramètre qui sera passé de l'extérieur en utilisant l'action définie. Vous conserverez ce fichier dans votre CLASSPATH.

Ensuite, modifions le struts.xml pour spécifier le résultat comme suit -

<?xml version = "1.0" Encoding = "UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
   <constant name = "struts.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">

      <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction"
         method = "execute">
         <result name = "success" type = "freemarker">
            <param name = "location">/hello.fm</param>
         </result>
      </action>
      
   </package>

</struts>

Gardons nos fichiers HelloWorldAction.java, HelloWorldAction.jsp et index.jsp tels que nous les avons créés dans le chapitre des exemples.

Maintenant, faites un clic droit sur le nom du projet et cliquez sur Export > WAR File pour créer un fichier War.

Déployez ensuite ce WAR dans le répertoire webapps de Tomcat. Enfin, démarrez le serveur Tomcat et essayez d'accéder à l'URLhttp://localhost:8080/HelloWorldStruts2/index.jsp. Cela produira l'écran suivant.

Entrez une valeur "Struts2" et soumettez la page. Vous devriez voir la page suivante.

Comme vous pouvez le voir, c'est exactement la même chose que la vue JSP, sauf que nous ne sommes pas liés à l'utilisation de JSP comme technologie de vue. Nous avons utilisé Freemaker dans cet exemple.

Le type de résultat de la redirection

le redirectresult type appelle la méthode standard response.sendRedirect () , ce qui oblige le navigateur à créer une nouvelle requête à l'emplacement donné.

Nous pouvons fournir l'emplacement soit dans le corps de l'élément <result ...>, soit en tant qu'élément <param name = "location">. Redirect prend également en charge leparseparamètre. Voici un exemple configuré à l'aide de XML -

<action name = "hello" 
   class = "com.tutorialspoint.struts2.HelloWorldAction"
   method = "execute">
   <result name = "success" type = "redirect">
      <param name = "location">
         /NewWorld.jsp
      </param >
   </result>
</action>

Il suffit donc de modifier votre fichier struts.xml pour définir le type de redirection comme mentionné ci-dessus et de créer un nouveau fichier NewWorld.jpg où vous serez redirigé chaque fois que l'action hello retournera avec succès. Vous pouvez consulter l' exemple d' action de redirection Struts 2 pour une meilleure compréhension.