Struts2的OGNL标签详解Word文档格式.docx
- 文档编号:16714508
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:9
- 大小:28.14KB
Struts2的OGNL标签详解Word文档格式.docx
《Struts2的OGNL标签详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《Struts2的OGNL标签详解Word文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
除此之外:
Struts2还提供了一些命名对象,这些命名对象与根对象无关,它们只是存在于StackContext中。
所以,访问这些对象实现需要使用#前缀来指明。
1、paramenters对象:
用于访问HTTP请求参数,
2、request对象:
用于访问HttpServletRequset的属性(Attribute)的Map。
例如#request.userName
3、Session对象:
用于访问HttpSession的属性。
例如#session.userName
4、Application对象:
用于访问ServletContext的属性。
例如#application.userName
5、Attr对象:
如果可以访问到,则访问PageContext,否则将依次搜索HttpServletRequset,HttpSession,ServletContext中的属性。
值得注意的是:
当系统创建Action实例后,该Action实例已经被保存到ValueStack中,故无需书写#即可访问Action属性。
OGNL中的集合(List/Map):
直接生成一个List类型的集合,该List对象中包含三个元素,都个元素之间以英文逗号隔开;
例:
<
s:
setname="
list"
value="
{'
song'
'
li'
xing'
}"
/>
直接生成一个Map类型的集合,该Map对象中每个Key-value对象之间以英文冒号隔开:
多项之间以英文逗号隔开。
foobar"
#{'
1'
:
'
'
2'
3'
Set标签用于蒋某个值放入指定范围:
Scope:
指定变量被放置的范围,该属性可以接受aplication、session、requset、page、action。
如果该属性,则默认在OGNLContext中。
Value:
赋给变量的值,如果没有设置该属性,则将ValueStack栈顶的值付给变量。
对于集合,OGNL提供了两个与元素:
in和notin,其中in判断某个元素是否在指定集合中;
notin则用于判断某个元素是否不在指定集合中。
in表达式:
<
iftest="
foo'
in{'
bar'
>
在<
/s:
if>
else>
不在<
notin表达式:
notin{'
OGNL还允许通过某个规则取得集合的自己,取得集合子集有三个操作符:
1、?
取出所有符合选择逻辑的元素
2、^:
取出符合集合逻辑的第一个元素
3、$:
取出符合选择逻辑的最后一个元素
iteratorvalue="
books.{?
#this.price>
35}"
propertyvalue="
title"
-$<
price"
br>
iterator>
在上面代码中,直接在集合后紧跟.{}运算符表明用于取出该集合的子集,{}内的表达式用于获取符合集合的元素,this指的是为了从大集books刷选数据到小集合,需要对大集合books进行迭代,this代表当前迭代的元素。
表达式用于获取集合中价格大于35的书的集合。
(一)、控制标签:
Struts2的非UI标签包括控制标签和数据标签,主要用于完成流程控制,以及对ValueStack的控制,数据标签主要用于访问ValueStack中的数据;
控制标签可以完成输出流程控制,例如分支,循环等操作,也可以对集合的合并,排列。
控制标签有:
1、if:
用于控制选择器输出的标签;
2、elseif:
与if标签结合使用,用于控制选择输出的标签;
3、else:
与if标签结合使用,用于控制选择输出的标签;
4、append:
将多个集合拼接成一个新的集合;
5、generator:
字符解析器,用于将一个字符串解析成一个集合;
6、Iterator:
这是一个迭代器,用于将集合迭代输出;
7、merge:
用于多个集合拼接陈一个新的集合。
但与appernd的拼接方式有所不同。
8、sort:
用于对集合进行排序;
9、Subset:
截取集合的部分元素,形成新的子集;
If/elseif/else这三个标签都是用于进行分支控制的,他们都是用于根据一个Boolean表达式的值,来确定是否计算、输出标签体的内容。
age"
21"
#age==23"
23<
elseiftest="
#age==21"
21<
elseif>
都不等<
iterator标签:
用于对集合进行迭代,这里集合包含List、Set和数组,也可对Map类型的对象进行迭代输出。
Value、id、Status三个属性都是可选属性,如果没有指定value属性,则使用ValueStack栈顶的集合。
iteratorvar="
u"
users"
status="
sts"
#sts"
/>
#u"
br/>
如果为<
iterator/>
标签指定status属性,即每次迭代时都会有一个IteratorStatus实例,该实例的方法包含如下几个:
IntgetCount():
返回当前迭代了几个元素;
IntgetIndex():
返回当前元素的索引;
BooleanisEven():
当前元素的索引是否是偶数;
BooleanisFirst():
当前元素是否是第一个元素;
BooleanisLast():
当前元素是否是最后一个元素;
BooleanisOdd():
当前元素的索引是否是奇数;
append标签:
用于将多个集合拼接起来,组成一个新的集合,通过阵中的拼接,从而允许通过一个<
iterator…./>
标签就完成对多个集合的迭代。
merge标签的用法看起来很像append标签,也是用于将多个集合拼接成一个集合但是采用的拼接方式与append不同,append是以集合位顺序的拼接,merge是以元素位顺序拼接;
generator标签:
指定字符串按指定分隔符分隔成多个子串,临时生成多个子串可以使用iterator标签来迭代输出。
可以理解我generator将一个字符串转化成一个集合,在该标签的标签体内,整个临时生成的集合将位于Valuestack的顶端,但一旦该标签结束,该集合将被移除Valuestack。
属性有count:
指定生成集合中元素的总数,separator:
指定用于解析字符串的分隔符;
val:
指定被解析的字符串;
converter:
制定一个转化器,该转化器负责将集合中的每个字符串转化成对象;
id:
可选属性,制定了该属性,则将生成的集合放在pageContext属性中;
Subset标签:
用于取得集合的子集,该标签的底层通过org.apache.Struts2.util.Subset.IteratorFilter类提供实现。
属性有:
count:
指定生成集合中元素的总数,如果不指定该属性,默认取得源集合的全部元素。
还有source,start,decider属性;
subset标签生成的子集放在ValueStack的栈顶,如果该标签结束后,该标签生成的子集将被移除出ValueStack栈。
Sort标签指定集合元素进行排序,进行排序是=时,必须提供自己的排序规则,即使实现自己的Comparator,自己的Comparator需要实现java.util.Comparator接口。
Comparator:
该属性指定进行排序的Comparator实例。
source:
该属性指定排序的集合。
如果不指定该属性,则对ValueStack栈顶的集合进行排序。
(二)、数据标签:
数据标签主要用于提供各种数据范文相关的功能,包含显示一个Action里的属性,以及生成国际化输出等功能,
数据标签主要包含:
action,bean,date,debug,i18n,include,param,push,set,text,url,property;
1、action:
用于直接在JSP页面直接调用一个Action,通过指定executeResult参数,还可以将该Action的处理结果包含到本页面中来。
如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果包含到本页面中来。
i.id:
该属性会作为该Action的应用ID
ii.name:
指定该标签调用哪个Action
iii.nameSpace:
指定该标签调用的Action所在的namespace
iv.executeResult:
该是属性指定是否要将action的处理结果页面包含到本页面。
默认值为false,即不包含。
v.ignoreContextParams:
指定该页面中的参数是否需要转入调用Action,该参数的默认值是false,即将本页面的请求参数传入被调用的Action。
2、bean:
用于创建一个JavaBEan实例,如果指定id属性,则可以将创建的JavaBean实例放入StackContext中。
属性有name:
指定要实例化的JavaBean的实现类;
该属性是个可选属性,指定该属性后该实例JavaBean实例会被放入到StackContext中(并不是ValueStack),从而允许直接通过该id属性来访问该JavaBean实例;
3、date:
用于格式化输出一个日期。
format:
根据该属性指定的格式来个事化日期;
nice:
该属性只能为true或false,它用于指定是否输出指定日期和当前时刻之间的时差;
name指定要格式化的日期值;
制定引用该元素的id值。
4、debug:
主要用于辅助调试,在页面上生成一个调试链接,通过该链接到ValueStack和StackContext中的所有的值信息;
debug/>
5、i18n:
用于制定国际化资源的文件的baseName
6、include:
用于JSP页面中包含其他的JSP或Servlet资源,属性有value:
指定需要被包含的JSP页面或者Servlet;
id指定该标签的ID引用
includevalue=”include-file.jsp”>
paramname=”author”value=”yeeku”/>
inlcude>
7、param:
通常用作bean标签,url标签的子标签,属性有name:
指定需要设置参数的参数名;
value:
指定需要设置参数的参数值;
id:
指定引用该元素的ID
paramname=”color”>
blue<
/param>
或<
paramname=”color”value=”blue”/>
8、push:
用于将某个值放到ValueStack的栈顶。
该属性指定需要放到ValueStack栈顶的值;
pushvalue=”#p”>
propertyvalue=”name”/>
push>
9、set:
用于设置一个新变量,并可以将新变量放入到指定的范围内,属性有name:
重新生成的新变量的名字;
scope:
可选属性,指定新变量被放置的范围,属性值有application、session、requset、page、action,没有指定属性,则默认为放置到StackContext中;
指定将赋值给变量的值,如果没有制定该属性,则将ValueStack栈顶的支付给行变量;
指定该元素的引用ID;
setvalue=”#p”name=”xxx”/>
10、text:
用于输出国际化消息
11、url:
用于生一个URL地址,属性有:
includeParams该属性指定包含的参数,属性值只能为none,get,all;
scheme用于设置scheme属性;
value指定生成URL的地址值,如果value不提供就有action属性指定的Action作为URL地址;
action指定生成URL的地址为那个Action,如果不提供,就用valuezuoweiURL的地址值;
namespace;
method;
encode指定是否需要encode指定是否需要encode请求属性;
includeContext指定是否需要将上下文包含在URL地址中;
anchor指定URL的锚点;
id;
12、property:
用于生成输出某个值,包括输出ValueStack,Stack,Context和ActionContext中得值。
属性有default如果需要输出的属性值为null,则显示的default属性指定的值;
espcape指定是否escapeHTML代码;
value到指定需要输出的属性值,如果没有指定该属性,则默认输出ValueStack栈顶的值;
id指定该元素的标识;
(三)、表单标签
Struts2的表单标签,可分为两种:
form表单本身和单个表单元素的标签。
Form标签本身的行为不同于表单元素的标签。
Struts2的表单元素标签都包含了非常多的属性,但有很多属性完全是通用的。
1)、表单标签的通用属性
所有表单标签处理类都继承了UIBean类,UIBean包含了一些通用属性,分为3种:
1、模板相关属性
2、JavaScript相关属性
3、通用属性
除此之外,所有表单元素标签都存在一个特殊属性:
form,通过该属性可以实现表单元素和表单之间的交互。
例如,我们可以通过${parameters.form.id}来取得表单元素所在表单的ID。
下面是表单标签的通用属性。
模板相关的通用属性如下:
1、templateDir:
指定该表单所用的模板文件目录。
2、theme:
指定该表单所用的主题
3、template:
指定该表单所用的模板
JavaScript相关的通用属性如下:
1、onclick:
指定鼠标在该标签生成的表单元素上单击时触发的JavaScript函数。
2、ondbclick:
指定鼠标在该标签生成的表单元素上双击时触发的JavaScript函数。
3、onmousedown:
指定鼠标在该标签生成的表单元素上按下时触发的JavaScript函数。
4、onmouseup:
指定鼠标在该标签生成的表单元素上松开时触发的JavaScript函数。
5、onmouseover:
指定鼠标在该标签生成的表单元素上悬停时触发的JavaScript函数。
6、onmouseout:
指定鼠标移除该标签生成的表单元素时触发的函数。
7、onfocus:
指定该标签生成的表单元素得到焦点时触发的函数。
8、onblur:
指定该标签生成的表单元素失去焦点时触发的函数。
9、onkeypress:
指定单击键盘上某个键时触发的函数。
10、onkeyup:
指定松开键盘上某个键时触发的函数。
11、onkeydown:
指定按下键盘上某个键时触发的函数。
12、onselect:
对下拉列表项等可以选择表单的元素,指定选中该元素时触发的JavaScript函数。
13、onchange:
对于文本框等可以接受输入的表单元素,指定当值改变时触发的javaScript函数。
因为Html本身的限制,并不是每个Html元素都可以触发以上的所有函数。
因此,上面的属性并不是对Struts2的每个标签都有效。
Struts2还允许为表单元素设置提示,单鼠标在这些元素上停悬时,系统将出现提示。
Struts2将这种特性称为Tooltip。
相关的通用属性如下:
1、tooltip:
设置此组件的Tooltip。
2、tooltipIcon:
设置Tooltip图标的URL路径。
3、tooltipAboveMousePointer:
是否在光标位置上显示Toopltip。
也可以通过设置tooltipOffseY属性,设置Tooltip与光标位置的垂直位移。
4、tooltipBgColor:
设置Tooltip的背景色。
5、tooltipBgImg:
设置Tooltip的背景图片。
6、tooltipBorderWidth:
设置Tooltip边框的宽度
2)、表单标签的name和value属性
Name和value属性之间存在一个独特的关系:
因为表单元素的name属性会映射到Action的属性当对应的Action已经被实例化,且对应属性有值时,表单元素会显示出该属性的值,该值就是表单元素的value值。
3)、checkboxlist标签
checkboxlist标签可以一次创建多个复选框,要根据list属性指定的集合。
还有两个常用的属性。
1、listKey:
该属性指定集合元素中的某个属性作为复选框的value值
2、listValue:
该属性指定集合元素中的某个属性作为复选框的标签。
4)、doubleselect标签
doubleselect标签会生成一个级联列表框(会生成两个下拉列表框),当选第一个列表框时,第二个的内容也会随之改变。
常用属性如下:
1、list:
指定用于输出第一个下拉列表框中选项的集合
2、listKey:
3、listValue:
4、doubleList:
指定用于输出的第一个下拉列表框中选项的集合
5、doubleListkey:
6、doubleListValue:
7、doubleName:
指定第二个下拉列表框的name属性。
一、head标签
二、optiontransferseselect标签
三、select标签
四、radio标签
五、optgroup标签
六、token标签
七、updownselect标签
非表单标签
一、actionerror和actionmessage标签
二、component标签
三、tree和treenode初步
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 OGNL 标签 详解