Struts 2 - Il tag Append
Supponiamo di avere due elenchi A e B con valori A1, A2 e B1, B2. Unendo le liste otterrai A1, B1, A2, B2 mentre aggiungendo le liste otterrai A1, A2, B1, B2.
Crea classi di azioni
Prima di tutto creiamo una semplice classe chiamata Employee.java che assomiglia a:
package com.tutorialspoint.struts2;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.util.SubsetIteratorFilter.Decider;
public class Employee {
private String name;
private String department;
public Employee(){}
public Employee(String name,String department) {
this.name = name;
this.department = department;
}
private List employees;
private List contractors;
public String execute() {
employees = new ArrayList();
employees.add(new Employee("George","Recruitment"));
employees.add(new Employee("Danielle","Accounts"));
employees.add(new Employee("Melissa","Recruitment"));
employees.add(new Employee("Rose","Accounts"));
contractors = new ArrayList();
contractors.add(new Employee("Mindy","Database"));
contractors.add(new Employee("Vanessa","Network"));
return "success";
}
public Decider getRecruitmentDecider() {
return new Decider() {
public boolean decide(Object element) throws Exception {
Employee employee = (Employee)element;
return employee.getDepartment().equals("Recruitment");
}
};
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public List getEmployees() {
return employees;
}
public void setEmployees(List employees) {
this.employees = employees;
}
public List getContractors() {
return contractors;
}
public void setContractors(List contractors) {
this.contractors = contractors;
}
}
La classe Employee ha due attributi: name e department, abbiamo anche due elenchi di dipendenti: il permanente employees e il contractors. Abbiamo un metodo chiamatogetRecruitmentDecider che restituisce a Decideroggetto. L'implementazione di Decider ritornatrue se il dipendente lavora per il recruitment reparto e ritorna false altrimenti.
Successivamente, creiamo un file DepartmentComparator per confrontare gli oggetti Employee -
package com.tutorialspoint.struts2;
import java.util.Comparator;
public class DepartmentComparator implements Comparator {
public int compare(Employee e1, Employee e2) {
return e1.getDepartment().compareTo(e2.getDepartment());
}
@Override
public int compare(Object arg0, Object arg1) {
return 0;
}
}
Come mostrato nell'esempio precedente, il responsabile del reparto confronta i dipendenti in base al reparto in ordine alfabetico.
Crea viste
Crea un file chiamato employee.jsp con i seguenti contenuti -
<%@ page contentType = "text/html; charset = UTF-8"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<html>
<head>
<title>Employees</title>
</head>
<body>
<b>Employees and Contractors Merged together</b>
<br />
<s:append id = "allemployees">
<s:param value = "employees" />
<s:param value = "contractors" />
</s:append >
<s:iterator value = "allemployees">
<s:property value = "name"/>,
<s:property value = "department"/><br/>
</s:iterator>
</body>
</html>
Il appendtag accetta due o più elenchi come parametri. Dobbiamo dare all'appendice un fileidin modo da poterlo riutilizzare in seguito. In questo esempio, forniamo dipendenti e appaltatori come parametri per il tag append. Quindi utilizziamo l'id "tutti i dipendenti" per scorrere l'elenco allegato e stampare i dettagli dei dipendenti.
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 = "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: