Struts 2 - The Action Tag
Il tag di azione consente ai programmatori di eseguire un'azione dalla pagina di visualizzazione. Possono ottenere ciò specificando il nome dell'azione. Possono impostare il parametro "executeResult" su "true" per rendere il risultato direttamente nella vista. Oppure possono impostare questo parametro su "false", ma utilizzare gli attributi di richiesta esposti dal metodo di azione.
Crea classe d'azione
package com.tutorialspoint.struts2;
public class HelloWorldAction {
private String name;
public String execute() throws Exception {
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Crea viste
Facciamo HelloWorld.jsp per dimostrare l'uso di generator tag -
<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h2>Example of Generator Tag</h2>
<h3>The colours of rainbow:</h3>
<s:generator val = "%{'Violet,Indigo,Blue,
Green,Yellow,Orange,Red '}" count = "7" separator = ",">
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
</body>
</html>
Avanti lasciaci employees.jsp con il seguente contenuto -
<%@ page contentType = "text/html; charset = UTF-8"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<html>
<head>
<title>Employees</title>
</head>
<body>
<s:action name = "hello" executeresult = "true">
Output from Hello: <br />
</s:action>
</body>
</html>
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 = "hello"
class = "com.tutorialspoint.struts2.HelloWorldAction"
method = "execute">
<result name = "success">/HelloWorld.jsp</result>
</action>
<action name = "employee"
class = "com.tutorialspoint.struts2.Employee"
method = "execute">
<result name = "success">/employee.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'URLhttp://localhost:8080/HelloWorldStruts2/employee.action. Questo produrrà la seguente schermata:
Come puoi vedere in questo esempio, abbiamo specificato il valore di executeResult su "true". Pertanto il risultato dell'azione hello.action viene reso direttamente nella pagina. HelloWorld.jsp stampa i colori dell'arcobaleno, che ora è reso all'interno di dipendente.jsp
Ora, modifichiamo leggermente HelloWorldAction.java -
package com.tutorialspoint.struts2;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.ServletActionContext;
public class HelloWorldAction {
private String name;
public String execute() {
List names = new ArrayList();
names.add("Robert");
names.add("Page");
names.add("Kate");
ServletActionContext.getRequest().setAttribute("names", names);
return "success";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Infine, modifica il file employee.jsp come segue:
<%@ page contentType = "text/html; charset = UTF-8"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<html>
<head>
<title>Employees</title>
</head>
<body>
<s:action name = "hello" executeresult = "false">
Output from Hello: <br />
</s:action>
<s:iterator value = "#attr.names">
<s:property /><br />
</s:iterator>
</body>
</html>
Di nuovo, fai clic con il pulsante destro del mouse sul nome del progetto e fai 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'URLhttp://localhost:8080/HelloWorldStruts2/employee.action. Questo produrrà la seguente schermata: