Subset标签从一个List元素中跟据需要获需所需元素并生成一个新的可迭代集合对象。值得注意的是,Subset标签可以指定一个decider属性,用于对每个元素做出复杂的判断。
如果没有指定var对象,新的集合将被放到ValueStack中,可能过%{top}或
IF标签属性 | ||||
---|---|---|---|---|
属性名 | 必要属性 | 默认值 | 类型 | 描述 |
count | FALSE | / | Integer | 指定最多取多少个元素。 |
decider | FALSE | / | org.apache.struts2.util.SubsetIteratorFilter.Decider | Decider实例,用于判定每个元素是否需要放入Subset。 |
source | FALSE | / | Object | 被过滤的原集合。 |
start | FALSE | / | Integer | 指定从哪个元素开始过滤,从0开始。 |
var | FALSE | / | String | 如果有指定var对象,新的集合将被以var对象值命名,并放到PageContext中,可通过%{#attr.varname}获得该集合。 |
说明:省略奇葩属性performClearTagStateForTagPoolingServers
public class TestAction extends ActionSupport { private List<Integer> myList; public String execute() throws Exception { myList = new ArrayList(); myList.add(1); myList.add(2); myList.add(3); myList.add(4); myList.add(5); return "done"; } public List getMyList() { return myList; } public Decider getMyDecider() { return new Decider() { public boolean decide(Object element) throws Exception { int i = ((Integer) element).intValue(); return (((i % 2) == 0) ? true : false); } }; } }
Subset没有应用任何参数,默认输出整个集合,这与不用Subset的效果一样。
<s:subset source="myList"> <s:iterator> <s:property /> </s:iterator> </s:subset> 输出结果: 1 2 3 4 5
<s:subset source="myList" count="3"> <s:iterator> <s:property /> </s:iterator> </s:subset> 输出结果: 1 2 3
<s:subset source="myList" count="100" start="3"> <s:iterator> <s:property /> </s:iterator> </s:subset> 输出结果: 4 5
<s:subset var="mySubset" source="myList"/> <s:iterator value="#attr.mySubset"> <s:property /> </s:iterator> 输出结果: 1 2 3 4 5
<s:subset source="myList" decider="myDecider"> <s:iterator> <s:property /> </s:iterator> </s:subset> 输出结果: 2 4
版权声明:本文为20NN作者「sophia」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:http://www.20nn.cn/struts/struts-subset.html
不良信息举报电话:029-85678878,商务合作短信留言:18291486809,邮箱:yte1@qq.com
『野天鹅』以分享生活智慧为中心,内容包括社保、档案、户籍、学业、商业、理财等,我们希望我们精心编排的内容能为您的日常生活提供真正有效的帮助。
『西安野天鹅网络技术有限公司』