Struts 2 - The Set Tag

Il propertytag viene utilizzato per ottenere la proprietà di un valore, che verrà impostato automaticamente in cima allo stack se non ne viene specificato nessuno. Questo esempio mostra l'utilizzo di tre semplici tag di dati, vale a direset, push e proprietà.

Crea classi di azioni

Per questo esercizio, riutilizziamo gli esempi forniti nel capitolo "Conversione del tipo di dati" ma con piccole modifiche. Quindi iniziamo con la creazione di classi. Considera la seguente classe 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;
   }
}

Cerchiamo di seguire la classe d'azione:

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

Crea viste

Facciamo System.jsp con il seguente contenuto -

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

Esaminiamo ora le tre opzioni una per una:

  • Nel primo metodo, usiamo il tag della proprietà per ottenere il valore del nome dell'ambiente. Poiché la variabile di ambiente si trova nella classe di azione, è automaticamente disponibile nello stack dei valori. Possiamo fare riferimento direttamente ad esso utilizzando la proprietàenvironment.name. Il metodo 1 funziona correttamente quando si dispone di un numero limitato di proprietà in una classe. Immagina di avere 20 proprietà nella classe Environment. Ogni volta che è necessario fare riferimento a queste variabili è necessario aggiungere "ambiente". come prefisso. È qui che il tag push torna utile.

  • Nel secondo metodo, inseriamo la proprietà "environment" nello stack. Quindi ora all'interno del corpo del push tag, la proprietà environment è disponibile alla radice dello stack. Quindi ora fai riferimento alla proprietà abbastanza facilmente come mostrato nell'esempio.

  • Nel metodo finale, usiamo il tag set per creare una nuova variabile chiamata myenv. Il valore di questa variabile è impostato su environment.name. Quindi, ora possiamo usare questa variabile ovunque ci riferiamo al nome dell'ambiente.

File di configurazione

Il tuo struts.xml dovrebbe apparire come -

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

Il tuo web.xml dovrebbe apparire come -

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

Fare clic con il tasto destro sul nome del progetto e fare clic Export > WAR Fileper creare un file War. Quindi distribuire questo WAR nella directory webapps di Tomcat. Infine, avvia il server Tomcat e prova ad accedere all'URL http: // localhost: 8080 / HelloWorldStruts2 / system.action. Questo produrrà la seguente schermata: