首页 > 编程 > Java > 正文

简单说明Java的Struts框架中merge标签的使用方法

2019-11-26 14:47:28
字体:
来源:转载
供稿:网友

merge标签合并标记需要两个或两个以上的列表作为参数,并把它们合并在一起,如下所示:

<s:merge var="myMergedIterator">   <s:param value="%{myList1}" />   <s:param value="%{myList2}" />   <s:param value="%{myList3}" /></s:merge><s:iterator value="%{#myMergedIterator}">   <s:property /></s:iterator>

如果有两个列表A和B的值,A1,A2和B1,B2。合并列表,会给出A1,B1,A2,B2。

创建动作类:
首先,让我们创建一个简单的类叫做Employee.java,它看起来像:

package com.yiibai.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;  } }

Employee类有两个属性 - name 和 department,我们也有两个员工名单 - employees 和contractors。我们有一个方法叫做getRecruitmentDecider,返回Decider 对象。Decider 实现返回true,如果雇员招聘部门工作,否则返回false。

接下来,让我们创建一个DepartmentComparator 比较Employee对象:

package com.yiibai.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>Employees and Contractors Merged together</b>  <br />  <s:merge id="allemployees">   <s:param value="employees" />   <s:param value="contractors" />  </s:merge>  <s:iterator value="allemployees">   <s:property value="name"/>,   <s:property value="department"/><br/>  </s:iterator></body></html>

合并标记需要两个或两个以上的列表作为参数。我们需要给合并一个id,这样我们就可以重用它。在这个例子中,我们提供了作为参数传递给员工和承包商的合并标签。然后,我们使用“allemployees”ID合并列表遍历并打印员工的细节。

配置文件
struts.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.yiibai.struts2.Employee"     method="execute">     <result name="success">/employee.jsp</result>   </action>  </package></struts>

web.xml中,应该像这样:

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

右键点击项目名称,并单击 Export > WAR File创建一个WAR文件。然后部署此WAR在Tomcat的webapps目录下。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/employee.action。这会给出以下画面:

201512484907744.jpg (560×264)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表