subset标签用于取得集合的子集,该标签的底层通过org.apache.Struts2.util.Subset.IteratorFilter类提供实现。使用subset标签可以指定如下几个属性:
count:可选属性,指定子集中元素的个数,默认取得源集合的所有元素
source:可选属性,指定源集合,如果不指定,默认取得valueStack栈顶的集合,一般都会指定
start:可选属性,指定从源集合的第几个元素开始截取,,默认从第一个元素(即start=0)开始
decider:可选属性,由开发者自己决定是否选中该元素
一般用法如下:
<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>使用s:subset标签截取集合元素</title>
</head>
<body>
<table border="1" width="200">
<s:subset source="{'Java','Spring2.0','J2EE','Ajax','WebWork'}"
start="1" count="3">
<s:iterator status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
</s:subset>
</table>
</body>
</html>
上面的代码的source属性指定的集合包含了5个元素,通过subset从第2个元素开始截取,只取出其中3个元素。
此外,Struts2还允许开发者决定截取标准,开发者只需要实现一个Decider类,实现SubsetIteratorFilter.Decider接口中的boolean decide(Object element)方法,如果该方法返回真,则表明该元素将被选入子集中。看如下代码:
package lee;
import org.apache.struts2.util.SubsetIteratorFilter;
public class MyDecider implements SubsetIteratorFilter.Decider
{
public boolean decide(Object element) throws Exception
{
String str = (String)element;
return str.indexOf("J2EE") > 0;
}
}
这里要求过滤不包含“J2EE”的元素,JSP页面代码如下:
<%@ page contentType="text/html; charset=GBK" language="java"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>使用s:subset标签截取集合元素</title>
</head>
<body>
<s:bean id="mydecider" name="lee.MyDecider"/>
<table border="1" width="200">
<s:subset
source="{'Java','Spring2.0','J2EE','Ajax','WebWork'}"
decider="#mydecider">
<s:iterator status="st">
<tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>
<td><s:property/></td>
</tr>
</s:iterator>
</s:subset>
</table>
</body>
</html>
分享到:
相关推荐
1. `<s:param>`:为其他标签提供参数,可以传递值到Action方法。 2. `<s:password>`:创建密码输入框,输入内容不可见。 3. `<s:property>`:获取属性值,可以是Action属性或OGNL表达式的结果。 4. `<s:push>`:将值...
本文将详细介绍Struts2.0标签库中 `$`, `#`, `%` 的使用方法及其区别。 #### 二、Struts2.0 标签概述 ##### 1. 通用标签 - **Property** - 用于展示数据栈中的数据。 - 支持默认值设置。 - 可以控制HTML转义。...
- **语法格式**:掌握`<s:generator>`标签的使用方法。 - **应用场景**:生成随机数或唯一标识符等。 - **5.3.3 if、else、elseif标签使用介绍** - **语法格式**:学习条件判断标签`<s:if>`、`<s:else>`、`<s:...
`<s:param>`标签用来传递列表或者表达式,这里的`%{}`表示OGNL表达式,可以访问Action中的属性。 ### 示例 假设我们有两个列表`myList1`、`myList2`,它们分别包含一些元素。使用`merge`标签合并这两个列表,代码...
5.3.7 subset标签使用介绍 86 5.4 Struts2数据标签简介 88 5.4.1 action标签使用介绍 88 5.4.2 bean标签使用介绍 89 5.4.3 date标签使用介绍 91 5.4.4 debug标签使用介绍 94 5.4.5 include标签使用介绍 95 5.4.6 ...
`append`用于将多个集合合并为一个新的集合,`id`属性定义新集合的名称,`<s:param>`子标签指定要合并的集合。 5. `generator`标签: 它可以将字符串按照指定分隔符拆分为多个子串,生成一个集合。`count`定义...
Map<String, Object> map = new HashMap<>(); map.put("contentType", "application/octet-stream"); map.put("contentDisposition", "attachment;filename=\"" + URLEncoder.encode(fileName, "UTF-8") + "\"");...
- **知识点**: 介绍了OGNL表达式语言的基本概念和使用方法。 - **核心内容**: - OGNL是一种强大的表达式语言,可以用来获取和设置Java对象的属性。 - 在Struts2中,OGNL经常被用于标签库中,以实现动态内容的...