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

作者:goldensun 时间:2023-09-17 00:32:26 

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。这会给出以下画面:

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

标签:Java,Struts
0
投稿

猜你喜欢

  • Android实现网络多线程断点续传下载功能

    2021-05-29 18:22:24
  • Java等待唤醒机制线程通信原理解析

    2022-03-31 00:37:21
  • Java 数组高频考点分析讲解

    2021-09-01 13:14:36
  • 深入解读Android的内部进程通信接口AIDL

    2022-09-09 04:02:02
  • C#中Winform 实现Ajax效果自定义按钮

    2022-05-14 08:22:51
  • c#多线程程序设计实例方法

    2023-07-24 16:39:28
  • Android 实现永久保存数据的方法详解

    2023-06-23 22:13:23
  • 解决Android Studio突然不显示logcat日志的问题

    2021-06-09 01:13:13
  • Java中关于Map四种取值方式

    2022-04-22 09:24:09
  • Android消息机制Handler的工作过程详解

    2023-07-31 13:49:03
  • C#与C++ dll之间传递字符串string wchar_t* char* IntPtr问题

    2022-09-16 09:34:53
  • Android实现录音静音降噪

    2023-01-06 23:46:25
  • 详解springboot项目带Tomcat和不带Tomcat的两种打包方式

    2023-11-28 08:23:41
  • Java 中ThreadLocal类详解

    2022-01-31 19:58:17
  • Java获取UTC时间的方法详解

    2022-03-24 13:50:50
  • Spring Boot中如何使用Swagger详解

    2023-09-27 18:13:58
  • Unity打开淘宝app并跳转到商品页面功能的实现方法

    2023-06-17 01:05:18
  • C#绘制中国象棋棋盘

    2021-05-27 15:08:44
  • docker 的java编译环境构建详细介绍

    2023-02-10 04:08:30
  • HashSet如何保证元素不重复(面试必问)

    2023-04-12 02:16:24
  • asp之家 软件编程 m.aspxhome.com