Unmi的Struts2学习笔记(九) - 编程入门网
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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |