Struts 2 - Le Set Tag

le propertytag est utilisé pour obtenir la propriété d'une valeur, qui sera par défaut en haut de la pile si aucune n'est spécifiée. Cet exemple vous montre l'utilisation de trois balises de données simples - à savoirset, push et propriété.

Créer des classes d'action

Pour cet exercice, réutilisons les exemples donnés dans le chapitre "Conversion de type de données" mais avec peu de modifications. Commençons donc par créer des classes. Considérez la classe POJO suivanteEnvironment.java.

package com.tutorialspoint.struts2;

public class Environment {
   private String name;
   public  Environment(String name) {
      this.name = name;
   }
   
   public String getName() {
      return name;
   }
   
   public void setName(String name) {
      this.name = name;
   }
}

Laissez-nous avoir la classe d'action suivante -

package com.tutorialspoint.struts2;
import com.opensymphony.xwork2.ActionSupport;

public class SystemDetails extends ActionSupport {
   private Environment environment = new Environment("Development");
   private String operatingSystem = "Windows XP SP3";

   public String execute() {
      return SUCCESS;
   }
   
   public Environment getEnvironment() {
      return environment;
   }
   
   public void setEnvironment(Environment environment) {
      this.environment = environment;
   }
   
   public String getOperatingSystem() {
      return operatingSystem;
   }
   
   public void setOperatingSystem(String operatingSystem) {
      this.operatingSystem = operatingSystem;
   }
}

Créer des vues

Laissez-nous System.jsp avec le contenu suivant -

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
	pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>System Details</title>
   </head>
   
   <body>      
      <p>The environment name property can be accessed in three ways:</p>

      (Method 1) Environment Name: 
      <s:property value = "environment.name"/><br/>

      (Method 2) Environment Name: 
      <s:push value = "environment">
         <s:property value = "name"/><br/>
      </s:push>

      (Method 3) Environment Name:
      <s:set name = "myenv" value = "environment.name"/>
      <s:property value = "myenv"/>
      
   </body>
</html>

Passons maintenant en revue les trois options une par une -

  • Dans la première méthode, nous utilisons la balise property pour obtenir la valeur du nom de l'environnement. La variable d'environnement étant dans la classe d'action, elle est automatiquement disponible dans la pile de valeurs. On peut s'y référer directement en utilisant la propriétéenvironment.name. La méthode 1 fonctionne correctement lorsque vous avez un nombre limité de propriétés dans une classe. Imaginez si vous avez 20 propriétés dans la classe Environment. Chaque fois que vous avez besoin de faire référence à ces variables, vous devez ajouter «environnement». comme préfixe. C'est là que la balise push est utile.

  • Dans la deuxième méthode, nous poussons la propriété «environnement» dans la pile. Par conséquent, maintenant dans le corps de la balise push, la propriété d'environnement est disponible à la racine de la pile. Vous vous référez donc maintenant assez facilement à la propriété, comme indiqué dans l'exemple.

  • Dans la méthode finale, nous utilisons la balise set pour créer une nouvelle variable appelée myenv. La valeur de cette variable est définie sur environment.name. Nous pouvons donc maintenant utiliser cette variable partout où nous nous référons au nom de l'environnement.

Fichiers de configuration

Votre struts.xml devrait ressembler à -

<?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 = "system" 
         class = "com.tutorialspoint.struts2.SystemDetails" 
         method = "execute">
         <result name = "success">/System.jsp</result>
      </action>
   </package>
</struts>

Votre web.xml devrait ressembler à -

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee" 
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">
   
   <display-name>Struts 2</display-name>
   
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Faites un clic droit sur le nom du projet et cliquez sur Export > WAR Filepour 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'URL http: // localhost: 8080 / HelloWorldStruts2 / system.action. Cela produira l'écran suivant -