首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Struts 2 資料標籤詳解:append 合併迭代器與 generator 動態生成列表

     編輯:MySQL 綜合教學

一、append 標籤:合併多個集合迭代

1.1 功能與語法

<s:append> 接受兩個或以上集合作為參數,將它們依序合併為單一迭代器,後續可用 <s:iterator> 遍歷。

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

合併順序保持參數順序:List A (A1,A2) + List B (B1,B2) → A1,A2,B1,B2。

1.2 完整實戰範例

Action 類別:

public class EmployeeAction extends ActionSupport {
  private List<Employee> employees;
  private List<Employee> 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;
  }
  // getter/setter 省略
}

Employee 模型:

public class Employee {
  private String name;
  private String department;
  // 建構子、getter/setter 省略
}

JSP 視圖:

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

輸出結果:

George, Recruitment
Danielle, Accounts
Melissa, Recruitment
Rose, Accounts
Mindy, Database
Vanessa, Network

二、generator 標籤:動態生成迭代器

2.1 功能與屬性

<s:generator> 根據字符串生成迭代器,支援以下屬性:

  • val:字符串值(支援 OGNL 表達式)
  • separator:分隔符(預設逗號)
  • count:最大生成數量
  • converter:自定義轉換器(可選)

2.2 基礎用法

<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}">
  <s:iterator>
    <s:property /><br/>
  </s:iterator>
</s:generator>

2.3 進階範例:彩虹七色

Action:簡單的 HelloWorldAction 返回 SUCCESS。

JSP:

<s:generator val="%{'Violet,Indigo,Blue,Green,Yellow,Orange,Red'}" 
           count="7" separator=",">
  <s:iterator>
    <s:property /><br/>
  </s:iterator>
</s:generator>

輸出七行顏色名稱。若 count="3" 則僅輸出前三色。

2.4 適用場景

  • 原型開發快速構造測試數據
  • 下拉選單固定選項(如星級、優先級)
  • 避免在 Action 中硬編碼 List 初始化

三、配置文件模板

struts.xml:

<package name="helloworld" extends="struts-default">
  <action name="employee" class="com.example.EmployeeAction">
    <result>/employee.jsp</result>
  </action>
  <action name="hello" class="com.example.HelloWorldAction">
    <result>/HelloWorld.jsp</result>
  </action>
</package>

web.xml:標準 Struts 2 Filter 配置。

四、總結

標籤核心用途關鍵屬性
append合併多個現有集合var, param
generator從字符串動態生成集合val, separator, count, converter

兩者皆輸出迭代器,配合 <s:iterator> 使用。實務中 append 適合聚合業務數據,generator 適合靜態選項或測試數據快速構造。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved