直接生成一个List类型的集合,该List对象中包含三个元素,都个元素之间以英文逗号隔开;
例:
<s:setname="list"value="{'song','li','xing'}"/>
直接生成一个Map类型的集合,该Map对象中每个Key-value对象之间以英文冒号隔开:多项之间以英文逗号隔开。
例:
<s:setname="foobar"value="#{'1':'song','2':'li','3':'xing'}"/>
Set标签用于蒋某个值放入指定范围:
Scope:指定变量被放置的范围,该属性可以接受aplication、session、requset、page、action。如果该属性,则默认在OGNLContext中。
Value:赋给变量的值,如果没有设置该属性,则将ValueStack栈顶的值付给变量。
对于集合,OGNL提供了两个与元素:in和notin,其中in判断某个元素是否在指定集合中;notin则用于判断某个元素是否不在指定集合中。 in表达式:<s:iftest="'foo'in{'foo','bar'}">在</s:if><s:else>不在</s:else>notin表达式:<s:iftest="'foo'notin{'foo','bar'}">不在</s:if><s:else>在</s:else>
OGNL还允许通过某个规则取得集合的自己,取得集合子集有三个操作符:
1、?:取出所有符合选择逻辑的元素
2、^:取出符合集合逻辑的第一个元素
3、$:取出符合选择逻辑的最后一个元素
例:<s:iteratorvalue="books. {?#this.price>35}"><s:propertyvalue="title"/>-$<s:propertyvalue="price"/><br></s: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表达式的值,来确定是否计算、输出标签体的内容。
例:<s:setname="age"value="21"/>
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-31926-2.html
只是美国这种做法有点可恶