<s:merge> 標籤將兩個或多個集合按交替順序合併為單一迭代器。例如列表 A=[A1,A2]、B=[B1,B2] 合併後為 [A1,B1,A2,B2]。
<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>
public class Employee {
private List employees, contractors;
public String execute() {
employees = Arrays.asList(
new Employee("George","Recruitment"),
new Employee("Danielle","Accounts")
);
contractors = Arrays.asList(
new Employee("Mindy","Database"),
new Employee("Vanessa","Network")
);
return "success";
}
// getter/setter 省略
}
<%@ taglib prefix="s" uri="/struts-tags"%>
<b>Employees and Contractors Merged</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>
<action name="employee" class="com.yiibai.struts2.Employee" method="execute">
<result name="success">/employee.jsp</result>
</action>
George, Recruitment Mindy, Database Danielle, Accounts Vanessa, Network
var/id 指定合併後迭代器的變量名,供 <s:iterator> 使用。merge 標籤簡化了多集合交替展示的邏輯,避免在 Action 中手動合併列表,保持視圖層純粹。