10.3控制标签
10.3.1
10.3.2
10.3.3
10.3.4
generator标签
使用generator
标签可以将指定字符串按指定分隔符分成多个子串,临时生成的多个子串可以使用iterator标签来迭代输出。可以这样理解:generator将一个字符串转化成一个集合。在该标签的标签体内,整个临时生成的集合将位于ValueStack的顶端,蛋一旦该标签结束,该集合将被移出ValueStack
generator
标签的属性:
1,count
:可选属性,该属性指定生成集合中元素的总数。
2,separator
:必填属性,指定用于解析字符串的分隔符。
3,val
:必填属性,指定被解析的字符串。
4,converter
:可选属性,指定一个转换器,该转换器负责将集合汇总的每个字符串转换成对象
5,id
:可选属性,如果指定了该属性,则将生成的集合放在pageContext属性中
代码示例
<!--
使用s:generator标签将一个字符串解析成集合-->
<s:generator
val = "
'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典' "
separator = ",">
<!--
在generator标签内,该集合位于valuestack的栈顶,故此处迭代就是临时生成的集合-->
<s: iterator
status = "st ">
<!--
根据当前迭代项索引的奇偶来决定是否使用CSS样式-->
< tr <s:if
test="#st.odd"
>
style
="background-color:#bbbbbb"</s:if>
>
<td><s:property/></td>
</tr>
</s:iterator>
</s:generator>
下面代码使用generator标签,使用了count和id属性,如果指定了count属性,意味着集合中最多只能包含count个元素(就是前count个元素),指定了id属性,就可以将临时生成的集合放置到pageContext属性中。代码如下:
<s:generator
val = "
'Spring2.0宝典,轻量级J2EE企业应用实战,基于J2EE的Ajax宝典' "
separator = ","
id="bookes" count="2"/>
<%
java.util.Iterator i = (java.util.Iterator)pageContext.getAttribute("books")
;
while( i.hasNext() ) {
String s = (String) i.next();
%>
<tr><td><%=s%></td></tr>
<%}
%>
10.3.5 merge标签
merge
标签的用法看起来非常像append标签,也是用于将多个集合拼接成一个集合,但是与append有区别。
如果采用append方式拼接,新集合的元素顺序为:
(1)第一集合的第1个元素
(2)第一集合的第2个元素
(3)第一集合的第3个元素
(4)第二集合的第1个元素
(5)第二集合的第2个元素
(6)第二集合的第3个元素
(7)第三集合的第1个元素
(8)第三集合的第2个元素
(9)第三集合的第3个元素
如果采用merge
方式拼接,新集合的元素顺序为:
(1)第一集合的第1个元素
(2)第二集合的第1个元素
(3)第三集合的第1个元素
(4)第一集合的第2个元素
(5)第二集合的第2个元素
(6)第三集合的第2个元素
(7)第一集合的第3个元素
(8)第二集合的第3个元素
(9)第三集合的第3个元素
merge标签的使用,与使用append标签的使用示例大致相同。
10.3.6
subset标签
subset
标签用于取得集合的子集,该标签的底层通过org.apache.Struts2.util.Subset.IteratorFilter类提供实现。
使用subset
标签有如下几个属性:
1,count
:可选,该属性指定了子集中元素的个数。默认是取得所有源集合的全部元素。
2,source
:可选,指定源集合。默认取得valuestack栈顶的集合
3,start
:可选,该属性指定了子集从源集合的第几个元素开始截取。默认从第一个元素,即从0开始截取。
4,decider
:可选,指定开发者自己决定是否选中该元素
-----------------------------------------------------------------------------------------------------------------------------------------------------------
!!注意:在subset标签内时,subset标签生成的子集放在valuestack的栈顶,该标签结束,生成的子集被移出valuestack栈。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
下面代码使用subset标签截取了源集合形成子集
<table
border="1" width="200">
<!--
使用subset标签截取目标集合的三个元素,从第一个开始-->
<s:subset
source=
"{'java培训基地', 'Spring2.0宝典', '轻量级J2EE企业应用实战', '基于J2EE的Ajax宝典',
'webwork实战' }"
start=“1” count=“3” >
<!--使用iterator标签来迭代目标集合,因为没有指定vlaue属性值,故迭代valuestack栈顶的元素-->
<s:iterator
status="st">
<!--根据当前迭代元素的索引是否为奇数,决定是否使用CSS样式-->
< tr <s:if
test="#st.odd"
>
style
="background-color:#bbbbbb"</s:if>
>
<td><s:property/></td>
</tr>
<s:iterator>
<s:subset>
</table>
除此之外,如果开发者需要实现自己的街区标准,则需要实现一个Decider
类,该类需要实现SubsetIteratorFilter.Decider接口。实现该类时,需要实现一个boolean
decide(Object element)方法,如果返回时真,表明该元素被选入子集中。看下面的Decider类代码:
public class MyDecider
implements
SubsetIteratorFilter.Decider
{
public boolean
decide(Objecit){
String str =
(String)element;
//如果集合元素(字符串)中包含J2EE子串,即可被选入子集
return str.indexOf("J2EE") >
0 ;
}
}
下面看看如何在JSP使用Decider实例来过滤集合
<!--定义一个Decider实例-->
<s:bean
id="mydecider" name="lee.MyDecider">
<table
border="1" width="200">
<!--使用自定义的Decider实例来截取目标集合-->
<table
border="1" width="200">
<s:subset
source=
"{'java培训基地', 'Spring2.0宝典', '轻量级J2EE企业应用实战', '基于J2EE的Ajax宝典',
'webwork实战' }"
decider = “#mydecider”>
<s:iterator
status="st">
<!--根据当前迭代元素的索引是否为奇数,决定是否使用CSS样式-->
< tr <s:if
test="#st.odd"
>
style
="background-color:#bbbbbb"</s:if>
>
<td><s:property/>
</td>
</tr>
<s:iterator>
<s:subset>
</table>
10.3.7
sort标签
sort
标签对于指定的集合元素进行排序,排序时,必须提供自己的排序规则,即实现自己的Comparator,自己的Comparator需要实现java.util.Comparator接口。
使用sort
标签时可指定如下几个属性:
1,comparator
:必填属性,指定进行排序的Comparator实例。
2,source
:可选属性,指定被排序的集合。默认对valuestack栈顶的集合进行排序。
-----------------------------------------------------------------------------------------------------------------------------------------------------------
!!注意:在sort
标签内时,sort标签生成的子集放在valuestack的栈顶,该标签结束,生成的子集被移出valuestack栈。
---------------------------------------------------------------------------------------------------------------------------------------------------------
下面是本实例应用中的Comparator类的代码:
public
class MyComparator implements Comparator
{ //决定两个元素大小的方法
public
int compare (Object element1 , Object element2 )
{
return ((String)element1).length() - ((String)element2).length();
}
}
分享到:
相关推荐
在Struts2中,自定义标签通常由Action类和结果页面共同完成,提供了一种声明式编程的方式,降低了视图与控制层的耦合度。 二、自定义标签的优点 1. 提高代码可读性:自定义标签将复杂的业务逻辑封装起来,使得HTML...
这些标签可以分为控制标签、数据标签和其他标签。 控制标签用来控制程序的执行,例如 if、else 和 iterator。数据标签用来管理数据的取得和创建,例如 bean、push 和 i18n。 4.1.1 if 标签 if 标签用来控制基本的...
2. **Struts2标签的类型**:包括控制标签(如`<s:if>`、`<s:iterator>`)、数据标签(如`<s:property>`)、表单标签(如`<s:form>`、`<s:textarea>`)以及国际化标签(如`<s:text>`)等。 3. **标签的生命周期**:...
Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建企业级Java Web应用程序。在Struts2框架中,标签库是其一大特色,它提供了丰富的自定义标签,使得开发者能够更加便捷地创建动态页面。这些标签极大地简化...
- **Struts2控制标签**: - 控制标签包括`append`、`generator`、`if/else/elseif`、`iterator`、`merge`、`sort`等。 - 这些标签主要用于控制页面内容的生成,帮助开发者实现更复杂的逻辑处理。 - 例如,`if`...
Struts2作为一款流行的Java Web框架,极大地简化了MVC(模型-视图-控制器)应用的开发。自定义标签是Struts2框架中的一个重要特性,它允许开发者创建自己的标签库,以更直观、易读的方式在JSP页面中处理业务逻辑。...
在实际开发中,Struts2的标签使得视图层的代码更加简洁易读,降低了视图和控制层之间的耦合度。它们提供了丰富的内置功能,如数据转换、国际化支持、错误处理等,使得开发者可以更专注于业务逻辑,而不是繁琐的HTML...
Struts标签库提供了一组预定义的JSP标签,这些标签有助于开发者更有效地处理常见的Web开发任务,如表单处理、数据展示、逻辑控制等。在本文中,我们将深入探讨其中的Bean Tags、HTML Tags和Logic Tags。 1. **Bean ...
"Struts2标签库详解" Struts2标签库是Struts2框架中的一个重要组件,它提供了一系列的标签,帮助开发者快速构建Web应用程序。在Struts2标签库中,标签可以分为UI标签和非UI标签两大类。UI标签用于生成HTML控件,如...
Struts2是一个强大的Java web应用程序框架,它极大地简化了MVC(模型-视图-控制器)架构的应用开发。在Struts2中,表单标签是用于处理用户输入和展示数据的关键组件,它们使得视图层的构建更加简洁和高效。本示例将...
3. **Logic标签**:虽然Struts2已经不推荐使用这些标签,但在老版本中它们用于控制流程。例如: - `<s:if>`和 `<s:else>`:条件判断,类似于Java中的if-else语句。 - `<s:iterate>`:遍历集合,类似于Java的for-...
- **控制标签**:如`s:if`、`s:else`、`s:iterator`,用于条件判断和循环。 - **动作标签**:如`s:action`、`s:url`,用于执行Action并生成相应的URL。 - **表单标签**:如`s:textfield`、`s:checkbox`、`s:radio...
文件名“struts2_05_03_controlTag”可能涵盖了Struts2控制标签的使用,这些标签包括导航和流程控制标签,如 `<s:if>`, `<s:else>`, `<s:switch>`, `<s:iterator>`等,它们帮助开发者根据条件执行不同的操作或循环...
Struts2 标签库(IBM资料)Struts2标签库概述; Struts2数据标签; Struts2控制标签; Struts2表单标签; Struts2非表单标签
Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查...
在Struts2框架中,标签库是一系列预定义的JSP标签,它们提供了丰富的功能,如数据绑定、控制流、输入验证等,帮助开发者创建更加整洁、易于维护的代码。 Struts2标签库主要分为以下几个部分: 1. **核心标签(Core...
- **控制标签**:如`s:if`, `s:else`, `s:choose`等,用于条件判断和流程控制。 - **数据展示标签**:如`s:textfield`, `s:textarea`, `s:checkbox`, `s:radio`等,用于创建表单元素并绑定到Action的属性。 - **...
流程控制标签用于实现分支、循环等流程控制的标签,而数据访问标签用于输出 ValueStack 中的值,完成国际化等功能的。 Ajax 标签 Ajax 标签用于实现异步请求和处理的标签。Ajax 标签可以实现页面无刷新更新、实时...