您的位置:首页 > 编程语言 > Java开发

Struts2知识点小结--标签

2010-05-17 14:38 225 查看
Struts Tag Library
对于一个MVC框架而言,重点是实现二个部分: 控制器部分和视图部分。 Struts2框架同样如此:控制器部分由
Action(以及隐藏的系列拦截器)来提供支持,而视图部分则通过大量标签来提供支持。
Struts2标签库使用OGNL表达式作为基础, 且默认支持OGNL, JSTL, Groovy和Velcity表达式。且把所有标签都
定义在URI为 /struts-tags 命名空间下,但我们依然可以依据功能将其分为三类:
1. UI标签;
a. 表单标签;
b. 非表单标签;树、Tab页等;
2. 非UI标签;
a. 流程控制: 条件、循环;
b. 数据访问: 输出ValueStack中的值;
3. AJAX标签;

Object Graph Navigation Language, 缩写为OGNL,是类似于EL的脚本语言,

一. 控制标签
Struts2中的非UI标签包括控制标签和数据标签,其中控制标签可以完成输出流程控制,例如条件、循环等操作,
也可完成对集合的合并、排序等操作,它有如下九个:
1) if: 选择输出;
2) elseIf/elseif: 与if标签结合使用;
3) else: 与if标签结合使用
4) append: 将多个集合拼接成一个新的集合;
5) generator: 将一个字符串解析成一个集合;
6) iterator: 将集合迭代输出;
7) merge: 将多个集合拼接成一个新集合,与append拼接方式不同;
8) sort: 对集合进行排序;
9) subset: 截取集合部分元素,形成新的子集;
1. iterator标签
对集合进行迭代,包括List,Set和数组,Map.
. value: 可选,被迭代的集合,通常使用OGNL表达式指定,如无,则使用ValueStack栈顶集合;
. id: 可选,指向集合中元素;
. status: 可选,指向迭代时IteratorStatus实例,通过该实例可判断当前迭代元素的属性;每次迭代都有
一个IteratorStatus实例,该实例包含以下方法:
a. int getCount(): 返回当前迭代了几个元素
b. int getIndex(): 返回当前迭代元素的索引
c. boolean isEven(): 当前索引是否为偶数
d. boolean isFirst(): 当前迭代元素是否是第一个元素
e. boolean isLast(): 当前迭代元素是否是最后一个元素
f. boolean isOdd(): 当前索引是否为奇数
2. if标签
根据一个Boolean表达式的值,来决定是否计算,输出标签体等内容。

3. append标签
将多个集合对象拼接起来,组成一个新的集合。
其中 id 属性确定拼接生成的新集合的名字。 append可接受多个<s:param ..../>子标签,每个子标签指定一个集合,append
将<s:param..../>指定的多个集合拼接成一个集合;
4. generator标签
将指定字符串按指定分隔符分隔成多个子串,临时生成的多个子串可以使用iterator标签来迭代输出。
a. count: 指定生成集合中元素总数;
b. separator: 指定解析字符串的分隔符;
c. val: 指定被解析的字符串;
d. converter: 可选,指定一个负责将集合中每个字符串转换成对象;
e. id: 指定访问集合的名称,如指定,则集合放在pageContext属性中;
5. merage标签
功能和append类似,但是新集合中各元素顺序不同:
append为:
1) 第一个集合第一个元素;
2) 第一个集合第二个元素;
3) 第一个集合第三个元素;
4) 第二个集合第一个元素;
5) 第二个集合第二个元素;
6) 第二个集合第三个元素;
7) 第三个集合第一个元素;
8) 第三个集合第二个元素;
9) 第三个集合第三个元素;
merage为:
1) 第一个集合第一个元素;
2) 第二个集合第一个元素;
3) 第三个集合第一个元素;
4) 第一个集合第二个元素;
5) 第二个集合第二个元素;
6) 第三个集合第二个元素;
7) 第一个集合第三个元素;
8) 第二个集合第三个元素;
9) 第三个集合第三个元素;
6. subset标签
取得集合的子集:
. count: 指定子集合元素个数;
. source: 指定源集合,如不指定,则默认取得ValueStack栈顶的集合;
. start: 指定从源集合中第几个元素开始截取,默契为第一个(值为0);
. decider: 指定由开发者是否选中该元素;
7. sort标签
对于指定的集合进行排序; 必须提供自己的排序规则,即提供实现 java.util.Comparator接口的实现类;
. comparator: 指定进行排序的 Comparator 实例;
. source: 指定被排序的集合,如不指定,则针对 ValueStack栈顶的集合;

二. 数据标签
提供各种数据访问相关的功能,包含显示一个Action中属性以及生成国际化输出等功能;
1. property标签
提供一种快速、方便地方式从ValueStack或ActionContext中获取值并显示;
. value: 指定输要输出的属性值,如没有指定,则默认输出ValueStack栈顶的值;
. default: 如输出属性值为 null, 则显示 default 属性的值;
. escape: 是否escape HTML 代码, 默认值为 true; 将 < 转化为 <
2. set 标签
将一个已有的值复制给新变量,然后放到指定的范围内
. name: 必填,新变量名字
. scope: 可选属性,指定新变量放置的范围,可以接受 application, session, request, page 或 action 五个值,
默认为 Action中;
. value: 可选,赋给变量的值,没指定,则为ValueStack栈顶的值;
. id: 可选,该元素的引用ID

3. push 标签
将某个值放到valueStack中,从而更加方便访问;
4. bean 标签
创建JavaBean实例;
. name: 必须,要实例化的JavaBean的完整类名;
. var: 可选,可通过该属性值在标签外访问已实例化的JavaBean;
5. Date 标签

格式化输出日期以及计算指定日期和当前时刻间的时差;
. format: 可选,指定日期显示格式;
. nice: 可选, 是否输出指定日期和当前时刻间的时差,默认值为 false;
. name: 必填,日期值;
. id: 可选,引用该元素的 id 值;
如果既指定nice="true", 又指定 format 属性,则会输出指定日期和当前时刻间的时差,即format属性失效;
如没有指定format属性,也没指定nice="true", 则系统会到资源文件中寻找 key 为 struts.date.format的消息作为格式,否
则采用默认的 DateFormat.MEDIUM格式输出。
6. action 标签
直接在JSP页面中直接调用Action
. id: 该Action的引用ID;
. name: 必须:调用哪个Action;
. namespace: 可选,调用Action所属的namespace;
. executeResult: 可选,是否将Action处理结果页面包含到本页面,默认值为false;
. ignoreContextParams: 可选,该页面中请求参数是否需传入调用的Action, 默认值为 false, 传入。
7. debug 标签
用于辅助调试,它在页面上生成一个超级链接,通过该链接可以查看到ValueStack和Stack Context中所有的值信息;
8. include 标签
将一个JSP或servlet包含到本页面中:
. value: 必填, 指定包含的资源;
. id: 可选,该标签的ID引用;
9. url 标签

生成一个URL 地址,可以通过为url标签指定 param 子元素,从而向指定URL发送请求参数。
. includeParams: 可选,是否包含请求参数,值为 none, get或者all.
. scheme: 设置schema属性;
. value: 可选,指定生成的URL值,如果无value有action就使用action指定Action作为URL地址;
如果均提供,则使用value指定URL值;如均不提供,则使用当前页面作为URL地址;
. action: 可选,指定action;
. namespace: 可选,指定命名空间;
. method: 可选,指定使用Action的方法;
. encode: 可选,是否需encode请求参数;
. includeContext: 是否需将当前上下文包含在URL地址中;
. anchor: 可选,指定URL锚点;
. id: 指定该URL元素的引用ID
10. i18n和text 标签
i18n用于显示指定指定语言资源文件;
. name: 资源文件名称;

text用于获取指定资源文件中指定key对应的值;
. name: 资源文件 key 值;
. id: 引用的标识;

三. Form标签
1. checkbox 标签

<s:set name="aBoolean" value="false"/><br>
<s:checkbox label="checkbox test" name="checkboxField1" value="#aBoolean" fieldValue="true"/>
<s:set name="aBoolean" value="true"/><br>
<s:checkbox label="checkbox test" name="checkboxField1" value="#aBoolean" fieldValue="true"/>
显示结果:
<input type="checkbox" name="checkboxField1" value="true" id="checkboxField1"/>
<input type="checkbox" name="checkboxField1" value="true" checked="checked" id="checkboxField1"/>
2. checkboxlist 标签
一次性创建多个复选框,它根据list属性指定的集合来生成多个复选框;
. listKey: 指定集合元素中的某个属性作为复选框的 value;
. listValue: 指定集合元素中的某个属性作为复选框的 标签;
3. combobox 标签
生成一个单行文本框和下拉列表框的组合,但两个表单元素只对应一个请求参数,只有单行文本框里的值才包含
请求参数,而下拉列表框则只是用于辅助输入,没有name属性。
4. doubleselect 标签
生成一个级联列表框, 当选择第一个下拉列表框时,第二个下拉列表框的内容会随之改变。
. list: 第一个下拉列表框的集合;
. listKey: 指定集合元素中某个属性作为第一个下拉列表框的value;
. listValue: 指定集合元素中某个属性作为第一个下拉列表框的标签;
. doubleList: 第二个下拉列表框的集合;
. doublelistKey: 指定集合元素中某个属性作为第二个下拉列表框的value;
. doublelistValue: 指定集合元素中某个属性作为第二个下拉列表框的标签;
. doublename: 第二个下拉列表框的 name 属性;
doubleselect标签一定得位于form中,且form须指定action属性.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: