Struts 2 - La etiqueta de conjunto

los propertyLa etiqueta se usa para obtener la propiedad de un valor, que se colocará por defecto en la parte superior de la pila si no se especifica ninguno. Este ejemplo le muestra el uso de tres etiquetas de datos simples, a saberset, push y propiedad.

Crear clases de acción

Para este ejercicio, reutilicemos los ejemplos dados en el capítulo "Conversión de tipos de datos" pero con pequeñas modificaciones. Empecemos por crear clases. Considere la siguiente clase POJOEnvironment.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;
   }
}

Tengamos la siguiente clase de acción:

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;
   }
}

Crear vistas

Déjanos tener System.jsp con el siguiente contenido -

<%@ 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>

Veamos ahora las tres opciones una por una:

  • En el primer método, usamos la etiqueta de propiedad para obtener el valor del nombre del entorno. Dado que la variable de entorno está en la clase de acción, está automáticamente disponible en la pila de valores. Podemos referirnos directamente a él usando la propiedadenvironment.name. El método 1 funciona bien cuando tiene un número limitado de propiedades en una clase. Imagínese si tiene 20 propiedades en la clase Entorno. Cada vez que necesite hacer referencia a estas variables, debe agregar "entorno". como prefijo. Aquí es donde la etiqueta push es útil.

  • En el segundo método, enviamos la propiedad "entorno" a la pila. Por lo tanto, ahora dentro del cuerpo de la etiqueta push, la propiedad del entorno está disponible en la raíz de la pila. Así que ahora se refiere a la propiedad con bastante facilidad, como se muestra en el ejemplo.

  • En el método final, usamos la etiqueta set para crear una nueva variable llamada myenv. El valor de esta variable se establece en environment.name. Entonces, ahora podemos usar esta variable siempre que hagamos referencia al nombre del entorno.

Archivos de configuración

Tu struts.xml debería verse como -

<?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>

Tu web.xml debería verse como -

<?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>

Haga clic derecho en el nombre del proyecto y haga clic en Export > WAR Filepara crear un archivo War. Luego implemente este WAR en el directorio de aplicaciones web de Tomcat. Finalmente, inicie el servidor Tomcat e intente acceder a la URL http: // localhost: 8080 / HelloWorldStruts2 / system.action. Esto producirá la siguiente pantalla: