创建Action类
首先让我们创建一个简单的类Employee.java,如下:
Employee类有两个属性:name和department,还有两个员工列表:永久的employees和contractors。 我们有一个名为getRecruitmentDecider的方法,它返回一个Decider对象。如果employee在recruitment(招聘)部门工作,则Decider实现返回true,否则返回false。
- package com.w3xue.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;
- }
- }
接下来,让我们创建一个DepartmentComparator来比较Employee对象:
如上所示,部门比较器按字母顺序比较部门的员工。
- package com.w3xue.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;
- }
- }
创建视图
创建一个名为employee.jsp的文件,包含以下内容:让我们逐一了解下使用过的标签:
- <%@ page contentType="text/html; charset=UTF-8" %>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- <title>Employees</title>
- </head>
- <body>
- <b>Example of Iterator Tag</b><br/>
- <s:iterator value="employees">
- <s:property value="name"/> ,
- <s:property value="department"/><br/>
- </s:iterator>
- <br/><br/>
- <b>Employees sorted by Department</b><br/>
- <s:bean name="com.w3xue.struts2.DepartmentComparator"
- var="deptComparator" />
- <s:sort comparator="deptComparator" source="employees">
- <s:iterator>
- <s:property value="name"/> ,
- <s:property value="department"/><br/>
- </s:iterator>
- </s:sort>
- <br/><br/>
- <b>SubSet Tag - Employees working in Recruitment department </b><br/>
- <s:subset decider="recruitmentDecider" source="employees">
- <s:iterator>
- <s:property value="name"/> ,
- <s:property value="department"/><br/>
- </s:iterator>
- </s:subset>
- <br/><br/>
- <b>SubSet Tag - Employees 2 and 3 </b><br/>
- <s:subset start="1" count="2" source="employees">
- <s:iterator>
- <s:property value="name"/> ,
- <s:property value="department"/><br/>
- </s:iterator>
- </s:subset>
- </body>
- </html>
Iterator标签
我们使用iterator标签来迭代employee列表,提供“employees”属性作为iterator标签的源。在iterator标签中,我们可以访问employee列表中的Employee对象,打印员工的名字,以及他们的部门。Sort标签
首先,我们将DepartmentComparator声明为bean,给这个bean命名为deptComparator。然后我们使用sort标签,指定“employees”列表作为源和指定“deptComparator”作为比较器使用。最后,按照前面的例子,迭代列表并打印员工名字。从输出中可以看到,将会打印按部门排序的员工列表。Subset标签
subset标签用于获取列表或数组的子集。有两种类型的subset标签,在第一个示例中,我们使用recreutationDecider获取在招聘部门工作的员工列表(请参阅Employee.java中的getRecruitmentDecider()方法)。在第二个例子中,我们不使用任何决策者,而是在列表中的元素2和3之后。subset标签接受两个参数“count”和“start”。“start”确定子集的起始点,“count”确定子集的长度。
配置文件
你的struts.xml应如下:
web.xml文件应如下:
- <?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.w3xue.struts2.Employee"
- method="execute">
- <result name="success">/employee.jsp</result>
- </action>
- </package>
- </struts>
现在,右键单击项目名称,然后单击“Export”> “WAR File”以创建WAR文件。然后在Tomcat的webapps目录中部署WAR文件。最后,启动Tomcat服务器并尝试访问URL http://localhost:8080/HelloWorldStruts2/employee.action,将显示以下界面:
- <?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>

转载本站内容时,请务必注明来自W3xue,违者必究。