Struts2框架标签库使用

在早期的web开发中,jsp视图控制和显示技术主要依靠java脚本实现的,这样一来,jsp页面嵌入了大量的java脚本代码,维护起来极为困难。从jsp1.1规范后,JSP增加了自定义标签库的支持,标签库是一种组件技术,通过标签库,可以将复杂的java脚本代码封装在组件中,开发者只需要使用简单的java代码就可以实现复杂的java脚本功能,提高了开发者的开发效率。

Struts2标签库的分类

主要分为以下三类:

UI标签(用户界面标签):主要是用于生成HTML元素的标签,UI标签又可以分为表单标签(生成Form元素)和非表单标签(生成tree、tab页等)

非UI标签:主要用于数据访问,逻辑控制。 非UI标签可以分为流程控制标签(用于实现分支、循环等流程控制)和数据访问标签(主要包括用户输出ValueStack中的值,完成国际化等功能)

Ajax标签:用于支持Ajax效果

Struts2标签使用前的准备:

我们可以在struts2-core-2.1.8.1.jar压缩文件的META-INF目录下找到struts-tags.tld文件,这个文件定义了Struts2的标签。

(1) 要在jsp页面中使用Struts2标签,先要指明标志的引入。通过jsp代码的顶部加入以下的代码:

(2) 在web.xml中声明要使用的标签

Struts2标签的使用

控制标签

Struts2的非UI标签包括控制标签和数据标签,主要用于完成流程控制,以及对ValueStack的控制,数据标签主要用于访问ValueStack中的数据; 控制标签可以完成流程输出控制,例如分支、循环等的操作,也可以对集合的合并、排列等。

控制标签有:

1、if:用于控制选择器输出的标签;

2、else if: 与if标签结合使用,用于控制选择输出的标签;

3、else:与if标签结合使用,用于控制选择输出的标签;

4、append:将多个集合拼接成一个新的集合;

5、generator:字符解析器,用于将一个字符串解析成一个集合;

6、iterator:这是一个迭代器,用于将集合迭代输出;

7、merge:用于多个集合拼接陈一个新的集合。但与appernd的拼接方式有所不同。

8、sort:用于对集合进行排序;

9、Subset:截取集合的部分元素,形成新的子集;

If/elseif/else这三个标签都是用于进行分支控制的,他们都是用于根据一个Boolean表达式的值,来确定是否计算、输出标签体的内容。

Iterator标签:

用于对集合进行迭代,这里集合包含List、Set数组,也可对Map类型的对象进行迭代输出。Vlue、id、Status三个属性都是可选属性,如果没有指定value属性,则使用ValueStack栈顶的集合。

如果为标签指定status属性,即每次迭代时都会有一个IteratorStatus实例,该实例的方法有:

Int getCount():返回当前迭代了几个元素;

Int getIndex():返回当前元素的索引;

Boolean isEven(): 当前元素的索引是否是偶数;

Boolean isFirst():当前元素是否是第一个元素;

Boolean isLast():当前元素是否是最后一个元素;

Boolean isOdd():当前元素的索引是否是奇数;

Sort标签 指定集合元素进行排序,进行排序时是=时,必须提供自己的排序规则,即实现自己的comparetor,自己的Comparetor需要实现java.util.Comparetor接口,属性有:

.Comparetor:该属性指定进行排序的comparetor实例。

.Source:该属性指定排序的集合。如果不指定该属性,则对ValueStack栈顶的集合进行排序。

集合合并标签:append和merge,将多个集合合并成一个集合

注:merge属性和append相同,结果的组织不一样

字符串分割标签:generator,将一个字符串按照指定分隔符分割成一个字符串数组

数据标签

用于提供各种数据范文相关的功能,包含显示一个Action里的属性,以及生成国际化输出等功能。

设置变量标签 set

将一个值赋给指定范围内变量。Set标签在某些情况下比较有用,例如在页面中多次引用一个复杂的表达式,我们可以将这个表达式赋给一个变量,然后直接引用该变量,带来的好处:

提升了性能,

提供了代码的可读性

栈顶置值标签push

将某个值置于值栈的顶部,标签结束后,将从值栈中移除。

javabean创建标签bean

用于创建javabean的实例,如果设置了var值,则存于StackContext中,标签结束后自动移除.

资源包含标签include

用于将一个html、jsp或servlet包含到当前页面中,使用param传递参数

URL生成标签

生成URL地址,可以通过param标签传递请求参数,如果参数为中文,自动编码

数据输出标签property

用于输出值栈(Stack Context)中的对象的属性值,使用value指定要输出的值,如果输出值栈中的值,不用#,如果省略value,表示取出值栈的栈顶对象输出。

Ajax标签

需要在jsp页面中添加以下引用:

表单标签

表单标签的name和value属性,name属性除了为html表单元素指定名称之外,它还映射到action的属性。

在大多数情况下,name属性映射到一个简单的javaBean属性,例如,name属性为userName,在表单提交后,Struts2框架会调用Action的setUserName()方法来设置属性。 如果希望在表单元素中显示Action属性的数据,为value属性指定表达式"%",这时会调用Action的getUserName()方法,并在表单中显示返回的数据。 之后,可以编辑这个值,然后重新提交他。

form标签

通常情况下,当前输出表单的请求和提交表单的请求属于同一个命名空间。如果输出表单的请求和提交表单的请求属于不同的名称空间,可以通过namespace属性指定处理表单提交的action所属的名称空间。

如果通过action的一个非execute方法输出表单,然后将表单提交给action默认的execute方法执行,那么form标签的action属性可以忽略。

Method 和enctype是HTML form标签的属性

form标签的validate属性设为true,将自动生成客户端的JavaScript验证代码

textarea标签:输出一个HTML多行文本输入控件

reset标签: 输出一个重置的按钮,与form标签一起使用,用来提供表单的重置

………

e. 非表单标签

Struts2的非表单标签包括下列标签:component、 a、actionnerror、actionmessage、filederror

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180317G17KSF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券