第21章 Struts 2标签库

Struts 2标签库概述

struts 2标签其实就是由Java类生成的基于XML脚本的方法。一个Struts 2标签代表着一系列复杂的Java代码,这些代码实现了该标签的功能。

所以一个Struts 2标签也可以看做是一个可以重用的功能模块的入口,标签的参数也是功能模块的参数。Struts 2标签的使用极大地减少了JSP

文件中Java脚本的使用量,使代码简洁而又功能强大。大量的标签可以组成一个标签库,一旦建立一个标签库,就可以在多个项目中使用它进行

视图开发,标签库具有很强的通用性和重用性。


Struts 2标签库大致可以分为两类,如下所述:

用户界面标签:这类标签主要用来生成HTML元素。

非用户界面标签:这类标签主要用来进行数据访问、逻辑控制等。

其中界面标签又可以分为以下几种。

表单标签:该标签主要用来生成HTML页面的Form元素,以及普通的表单元素。

非表单标签:该标签主要用来生成页面上的tree、tab等。

其中非界面标签又可以分为以下几种。

数据访问标签:主要包含用于输出堆栈(ValueStack)中的值、完成国际化等功能的标签。

流程控制标签:该标签主要用于实现分支、循环等流程控制等。


Struts 2控制标签


循环标签iterator

iterator标签主要用来对集合属性进行遍历输出,其中的集合属性可能是List,Map或者是数值。


在使用<s:iterator>标签进行输出时,常用的标签属性如下所述。

id:指定了集合的id

value:该属性指定即将进行遍历的集合对象。

status:该属性用来代表一个遍历时的IteratorStatus实例,该实例即当前被遍历到的集合的元素。


IteratorStatus常用的方法有以下几个:

int getIndex():返回当前被遍历元素的索引值。

int getCount():返回已经遍历元素的总数。

boolean isEven():判断当前迭代元素是否为偶数。

boolean isOdd():判断当前迭代元素是否为奇数。

boolean isFirst():判断当前迭代元素是否为集合中第一个元素。

boolean isLast():判断当前迭代元素是否为集合中最后一个元素。


选择标签if/elseif/else


该标签主要用来控制流程分支,同Java的流程控制相似,都是用一个boolean类型的表达式的值判断是否进行相关的操作,其格式

如下:

<s: if test="">
...
<s: if>
<s: elseif test="">
...
<s: else>
...
</s: else>

上面3个标签中test属性必须设置,它是一个boolean类型的表达式,如果test的值为true,则进行下面的操作。


集合连接标签append


append标签用于将多个集合对象连接在一起,从而组成一个新的集合。一般来说,这样拼接的目的就是为了使用iterator标签遍历新的

集合。

id:用来指定拼接后生成对象的Id。这样在使用iterator遍历时就可以通过value引用到该对象。

<s:param  />:用来指定要拼接的子对象。


子集标签subset


该标签用于获取某个集合的子集合,该标签的常用属性有以下几种。

id:指定了集合元素的ID

source:指定源集合的名字,为一个字符串。

start:为一个Integer类型,指定子集合从源集合的哪个元素开始获取,默认为0,即从第一个元素开始获取。

count:为一个Integer类型的值,指定子集合从源集合获取元素的个数,默认为从start开始直到结尾。


排序标签sort


该标签用来对指定的集合进行排序,开发者需要指定自己的排序规则。如果要实现自己的规则,只需要实现Java.util.Comparator接口即可。

该标签的常用属性有以下几种:

id:指定了集合元素的ID。

comparator:必填属性,为一个Comparator类型,用于指定用户自定义的Comparator实例。

source:可选属性,为一个String类型值,用来指定被排序的集合名。如果不指定该值,则默认对值栈的栈顶集合进行排序。

使用sort标签必须指定comparator属性,如果用户需要开发自己的comparator,只需要实现Java.util.Comparator接口并重写compare()方法

即可。


数据标签


action标签允许程序员在JSP页面中直接调用struts.xml中配置的Action类。在JSP文件中,可以通过action标签的属性引用Action的name和

namespace,从而实现调用。并且可以显示调用的结果。


使用<s:action>标签调用Action类,action标签的属性如下所述。

name:指定了struts.xml文件中的业务控制器的名字,表示调用的是该控制器。

executeResult:指定了是否指向所调用Action的result,如果为true,将会显示result结果;否则不显示。

ignoreContextParams:用来指定是否将当前页面中的请求参数传入调用的Action。默认为false,即传递请求参数到Action类。


JavaBean调用标签bean


该标签用于创建一个JavaBean实例,在JSP视图中可以通过<s:bean/>标签去创建多个JavaBean类的实例,通过<param.../>参数给该实例的

属性赋值,然后在JSP文件中使用该实例。


值栈置顶标签push


该标签用来把一个值保存在值栈的栈顶,这样可以方便访问。


调试标签debug


debug标签主要用来进行调试,是Struts 2为了调试提供的一个辅助功能。该标签可以在页面上生成一个超链接,单击该链接可以查看Stack

 Context中的内容。


包含标签include


include标签和JSP标签库中的include标签类似,使用它可以把其他的静态页面、JSP页面、Servlet包含到当前的页面中。该标签的value属性

指定了被包含文件的名字,<param>标签用来给这个页面传入一些参数。


参数传递标签param


该标签一般在其他标签的内部使用,用来给其他的标签传递参数。

name:用于指定参数的名字。

value:用于设置参数值,该属性为一个Object类型。


变量赋值标签set


该标签用于在指定的范围内给一个变量设置一个值。该标签主要有以下属性。

name:必填属性,用于设置变量的名称。

value:可选属性,用于指定变量的值。

scope:可选属性,用于指定变量的有效范围,可以是application,session,request、page或者action。如果没有指定,则该变量被放入

StackContext中。


地址标签url


该标签用来生成URL地址,主要有以下属性。

action:用来指定要访问的Action类的名字,如果没有设置该属性,可以使用value作为URL的地址。

value:用来指定生成的URL地址,如果没有设置该属性,可以使用action声明该URL地址。

includeParams:可选属性,用来声明是否包含请求参数,其值只能为none、all或者get。

namespace:可选属性,用来指定Action类的方法。

method:可选属性,用来指定Action类的方法。

encode:可选属性,用来指定是否需要encode请求参数。


值输出标签property


该标签用来输出指定的值,它在JSP文件中经常被使用。该标签的属性如下所述。

default:可选属性,如果输出的属性值为null,则用default的值去代替。

escape:可选属性,用来指定是否escape HTML代码。

value:可选属性,用来指定需要输出的值,如果没有指定其属性,则输出值栈栈顶的属性值。


表单标签


Struts 2的用户界面标签可以分为表单标签和非表单标签,表单标签在实际开发中用的非常广泛,通过使用它,可以进行用户数据的输入

和用户交互等操作。Struts 2的表单标签有个公共父类UIBean,在Struts 2的源代码中可以找到这个类,目录为

src\core\src\main\Java\org\apache\Struts2\components。所以,所有的表单标签从该父类继承了一些公共的属性,可以简单地分为以下

3类。


模板相关属性:这些属性主要用来指定表单使用的模板和主题。

JavaScript相关属性:主要用来在客户端浏览器和用户交互的一些属性。

通用属性:这些属性是所有的表单要素都有的注入名称、label、值、标题、是否必填等。


复选框标签checkbox

复选框集合标签checkboxlist

组合框标签combobox

日期选择标签datetimepicker

下拉列表框标签select

单选框标签radio

选项组标签optgroup


其他常用表单标签

1.文本区域标签textarea

2.密码标签password

3.输入框标签textfield


非表单标签


信息显示标签actionerror和actionmessage

这两个标签都用来输出Action类对应方法产生的信息,actionerror用来输出Action类中getActionErrors()方法返回的信息,actionmessage用来输出

Action类getActionMessage()方法返回的信息。这两个方法都是ActionSupport类提供的,用户不需要在Action类中调用它们,只需要通过

addActionErrors和addActionMessages()方法将信息添加到ActionContext中,再调用这两个标签去显示即可。


树形结构标签tree和treenode


tree标签用来生成一个树形结构,而treenode用来生成该树形结构的一个节点,这两个标签要放在一起使用,它们的主要属性及说明如下所述:

id:用来指定标签的ID值。

title:作用类似label,用来指定树形结构的标签。

rootNode:用来指定树形结构的基点。

nodeIdProperty:用来指定树形结构节点的title属性。

childCollectionProperty:用来指定树形结构节点的所有子节点。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值