<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。
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
<s:generator> 根據字符串生成迭代器,支援以下屬性:
val:字符串值(支援 OGNL 表達式)separator:分隔符(預設逗號)count:最大生成數量converter:自定義轉換器(可選)<s:generator val="%{'aaa,bbb,ccc,ddd,eee'}">
<s:iterator>
<s:property /><br/>
</s:iterator>
</s:generator>
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" 則僅輸出前三色。
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 適合靜態選項或測試數據快速構造。