快速业务通道

Unmi的Struts2学习笔记(九) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

Unmi的Struts2学习笔记(九)

时间:2011-09-04 Unmi.cc 隔叶黄莺

中世纪的欧洲《礼仪书》中说:痰不要吐到桌子上,也不要飞过桌子。1774年 ,欧洲的《礼仪与基督教礼貌守则》中说:我们再也不能原谅那些把痰吐到窗户 外、墙上或者家具上的人。可见,欧洲人的素质也是在他们工业化富了之后的事 。至少那个时候,我们的老祖宗再不争气,也绝不会把痰吐到桌子上。

1. OGNL 中有生成 List 和 Map 的表达式,分别是:{e1,e2,e3,...} 和 # {key1:val1,key2:val2,...}。对集合 OGNL 提供了两个操作符 in 和 not in, 如:

<s:if test="''foo'' in {''foo'',''bar''}" ... </s:if>       ---- not in 的用法当然是一样的了。

之外,OGNL 还允许通过某个规则取集合的子集

·? :取出所有符合条件逻辑的元素

·^:取出符合条件的第一个元素

·$:取出符合条件的最后一个元素

请将上面这三个符号与正则表达式的表示法联系起来

例了:persons.relatives.{? #this.gender == ''male''}    //取出集合 persons 中所有 gender 属性为 ''male'' 的子集。

OGNL 还支持基本的 Lambda(λ) 表达式语法,不过好像有点复杂,暂不关顾 。

2. Struts2 的各路标签已是面目全非了。

<s:if test="exp">...</s:if><s:elseif test="exp">...</s:elseif><s:else>...</s:else> 对应 了 java 的 if/else if/else

<s:iterator.../> value 未指定是默认为 ValueStack 栈顶集合。id 为当前元素变量名。status 为 IteratorStatus 实例,包含奇还是偶行,当前索 引,是否第一或最后一条记录。

3. iterator 可以迭代 List、Set 和数组,也可以迭代 Map,用法如下:

<s:iterator value="{''e1'',''e2'',''e3''}" id="name" status="st">

  //这是用 OGNL 生成的 List     <s:property value="name"/>      //也可以写成 <s:property 

value="#name"/>      <s:if test="#st.odd">偶数位

</s:if>      // st 其他属必如:#st.count、#st.index、

#st.even、#st.first、#st.last,前面的 # 号不能少  

</s:iterator>

Unmi的Struts2学习笔记(九)(2)

时间:2011-09-04 Unmi.cc 隔叶黄莺

迭代 Map,用 key 和 map 对应

<s:iterator value="#

{''key1'':''val1'',''key2'':''val2'',''key3'':''val3''}">   

<s:property value="key"/> | <s:property value="value"/>  

//不能写成 #key 和 #value,对 OGNL 还不熟  
</s:iterator>

4. <s:append.../> 用于将多个集合拼成一个新集合,从而能用一个 <s:iterator .../> 对多个集合迭代,也能拼 Map 的。<s:merge .../> 也是用来拼接集合,只是不像 <s:append .../> 那样依次保持 着顺序,<s:merge .../> 是交错的。可以理解为前一个是深度拼接,后一 个是广度拼接。

5. 在学习 <s:generator .../> 时我们能同时体验一下 Struts2 标签 是如何操作栈的,当然这里指的是 ValueStack,而非 Java 的方法栈。

<s:generator val="''1,2,3''" separator=","> <!--字符

串''123''以","分隔生成一个集合,并压栈-->    

<s:iterator>   <!-- 这里没有指定 value 属性,默认弹栈,并取一个元素压栈 -->             <s:property/> 

<!-- 也没有指定 value 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号