Merge标签与Append标签有点相似,不同的是,Append的标签把多个集合按先后顺序组成一个整体,而Merge标签则是把多个集合元素“交叉混合”组成一个新的集合,建议大家直接看示例。
Append标签属性 | ||||
---|---|---|---|---|
属性名 | 必要属性 | 默认值 | 类型 | 描述 |
var | true | String | 组合后放到Action Context中变量的名称,以%{#varname}方式获取这个变量 |
说明:省略奇葩属性performClearTagStateForTagPoolingServers
Merge标签需要配合param标签使用,被组合的跌代器由一个或多个param标签传入,具体请看如下示例。
//此部分同Append的示例代码一致。 public class AppendIteratorTagAction extends ActionSupport { private List myList1; private List myList2; private List myList3; public String execute() throws Exception { myList1 = new ArrayList(); myList1.add("1"); myList1.add("2"); myList1.add("3"); myList2 = new ArrayList(); myList2.add("a"); myList2.add("b"); myList2.add("c"); myList3 = new ArrayList(); myList3.add("A"); myList3.add("B"); myList3.add("C"); return "done"; } public List getMyList1() { return myList1; } public List getMyList2() { return myList2; } public List getMyList3() { return myList3; } }
<s:merge var="myMergedIterator1"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /> </s:merge> <s:iterator value="%{#myMergedIterator1}"> <s:property /> </s:iterator>
* 注意:请仔细观察下面的顺序:
1 a A 2 b B 3 c C
Merge标签同Append标签一样,它们生成的被迭代对象为org.apache.struts2.util.MergeIteratorFilter对象,一但被迭代后,无法再次迭代(或许是我不知道,我没有从MergeIteratorFilter对象里找到对应的Reset方法,知道的朋友可以留言)。
无法应用Iterator的start、end、step属性,即使写了也无效。
版权声明:本文为20NN作者「sophia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:http://www.20nn.cn/struts/struts-merge.html
不良信息举报电话:029-85678878,商务合作短信留言:18291486809,邮箱:yte1@qq.com
『野天鹅』以分享生活智慧为中心,内容包括社保、档案、户籍、学业、商业、理财等,我们希望我们精心编排的内容能为您的日常生活提供真正有效的帮助。
『西安野天鹅网络技术有限公司』