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>
分享到:
相关推荐
接下来,我们将通过几个具体的示例来详细了解 `<s:if>` 标签的使用方法。 ##### 示例一:简单的条件判断 ```html <s:set name="country" value="China" /> <s:if test="%{#country == 'China'}"> This is China! ...
在Struts2框架中,`<sx:>`标签是Struts2 XWork库的一部分,用于增强JSP页面的功能,提供更强大的数据绑定和表单处理能力。本篇将重点讲解如何利用`sx:`标签实现组合查询和带分页功能。 首先,让我们了解下Struts2的...
在这个主题中,我们将深入探讨OGNL(Object-Graph Navigation Language)以及如何通过`<s:property>`标签来访问Struts2中的值栈(Value Stack)。值栈是Struts2中一个核心的概念,它是一个存储用户请求数据和应用...
同时,可以使用`<s:choose>`, `<s:when>`, 和 `<s:otherwise>`标签来创建类似于switch-case的结构: ```jsp <s:choose> <s:when test="%{status == 'active'}"> <!-- 活动状态的行内容 --> </s:when> <s:when ...
- **遍历数组或列表**:`<s:iterator value="{'1','2','3','4','5'}" id='number'>...</s:iterator>` 这个例子中,`siterator` 标签将遍历给定的字符串数组,并为每个元素提供 ID 'number'。 - **利用 status 获取...
在示例代码中,`<s:property>`标签使用OGNL表达式`#request.req`、`#session.sess`和`#application.app`分别获取了Request、Session和Application范围内的属性值。这展示了OGNL如何灵活地访问不同级别的数据。 其次...
- 在JSP页面上,使用OGNL标签显示和处理数据,如`<s:if test="%{user.isAdmin}">管理员界面</s:if>`。 通过理解并熟练运用OGNL表达式和相关标签,开发者可以更高效地构建Struts2应用程序,实现数据的灵活绑定和...
5. **动态方法调用**:`<s:set>`和`<s:property>`等标签可以使用OGNL表达式进行动态方法调用,提高代码灵活性。 6. **选择列表**:`<s:select>`标签可以用于创建下拉列表,通过集合数据源动态生成选项。 通过学习...
<p>名称:<s:property value="name"/></p> </s:iterator> ``` - **说明**:遍历一个集合或数组,并对每个元素执行标签体内的内容。 25. **`<s:label>`** - 显示标签。 - **示例**: ```jsp <s:label value=...
通过阅读`Struts#.txt`文件,我们可以深入学习Struts2框架下OGNL的使用方法和技巧,了解如何有效地利用OGNL上下文和Action上下文来操纵数据,以及如何在JSP页面中使用OGNL标签进行数据展示和控制流。这将有助于提升...
在Struts2中,所有的标签都统一在`<s>`前缀下,通过引入`<%@ taglib prefix="s" uri="/struts-tags" %>`就可以在页面上使用这些标签。 **A组标签:** 1. `<s:a>` - 用于创建超链接,与HTML的`<a>`标签类似,可以...
- `<s:if>`和`<s:else>`:这些标签允许基于OGNL表达式的条件逻辑。例如,`<s:if test="%{user.age > 18}">成年人</s:if><s:else>未成年人</s:else>`。 **4. OGNL表达式** OGNL表达式可以包含点号(.)来访问对象的...
13. `<s:if>`, `<s:elseif>`, `<s:else>`:条件判断标签,基于OGNL表达式进行逻辑判断,如`<s:if test="%{age > 18}">成年人</s:if>`。 14. `<s:div>`:相当于HTML的`<div>`标签,用于创建区块。 15. `<s:...
在Struts2中,不再像Struts1.x那样将标签库分为html、bean、logic和tiles等类别,而是统一使用一个`<s>`前缀的标签库,只需在JSP页面头部引入`<%@ taglib prefix="s" uri="/struts-tags" %>`即可使用所有标签。...
这篇文档详细讲解了 `s:iterator` 标签的使用方法以及 OGNL(Object-Graph Navigation Language)的用法。 1. **s:iterator 标签的基本属性** - `value`:这个属性是必需的,用于指定要迭代的集合。它可以是一个...
这里`<s:set>`标签用于设置变量,`<s:url>`则用于生成URL。 #### 五、Struts2表单标签 Struts2的表单标签主要包括以下几种: 1. **`<s:form>`**:表单标签,用于创建HTML表单。 2. **`<s:textfield>`**:用于生成...
例如,可以使用 `<s:if>` 标签来判断某个值是否包含在另一个集合中,或者判断某个值是否不在一个集合中。 示例代码展示了如何判断 `'aa'` 是否在 `{'aaa','bbb'}` 集合中,以及 `req` 是否不在 `list` 集合中: ```...
1. `<s:param>`:为其他标签提供参数,可以传递值到Action方法。 2. `<s:password>`:创建密码输入框,输入内容不可见。 3. `<s:property>`:获取属性值,可以是Action属性或OGNL表达式的结果。 4. `<s:push>`:将值...
3. **`<s:if>`、`<s:elseif>` 和 `<s:else>`**:这些标签提供了条件逻辑,用于根据 OGNL 表达式的值来决定是否渲染某些内容。例如,`<s:if test=" ">...</s:if>` 会检查表达式的结果,如果为真则执行其中的代码。 4...
- **数据标签**:这类标签主要用于展示数据,包括`<s:textfield>`、`<s:textarea>`、`<s:checkbox>`、`<s:radio>`等表单元素。 #### 六、主题和模板 Struts2允许开发者自定义页面的主题和模板,这对于统一页面样式...