Unmi的Struts2学习笔记(九)

中世纪的欧洲《礼仪书》中说:痰不要吐到桌子上,也不要飞过桌子。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>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ognl
, 表达式
, 操作符
Struts2 OGNL
,以便于您获取更多的相关知识。

时间: 2024-12-30 14:38:54

Unmi的Struts2学习笔记(九)的相关文章

Unmi的Struts2学习笔记

Unmi的Struts2学习笔记(十四) Unmi的Struts2学习笔记(十三) Unmi的Struts2学习笔记(十二) Unmi的Struts2学习笔记(十一) Unmi的Struts2学习笔记(十) Unmi的Struts2学习笔记(九) Unmi的Struts2学习笔记(八) Unmi的Struts2学习笔记(七) Unmi的Struts2学习笔记(六) Unmi的Struts2学习笔记(五) Unmi的Struts2学习笔记(四) Unmi的Struts2学习笔记(三) Unmi的S

Unmi的Struts2学习笔记(二)

记笔记,尤其是在 Blog 里记,实则是浪费时间.让学习.阅读的速度以数量 级的下降,收获时当时掌握的更细,却并不代表着真记得牢.一小段时间不用它 ,同样可以忘得很干净,也就是方便于以后能由此泛起些涟漪,如能抛砖引玉就 更幸运了.入正题: 1. 记得 Struts1 的 struts-config.xml 通常是放在 WEB-INF 目录下的, Struts2 的 struts.xml 却要放到 WEB-INF/classes 下的,傻眼了吧,反正我是 .没看仔细之前,总给我报 There is

Unmi的Struts2学习笔记(一)

Struts 从1.1使用到1.3已有多年,都升成2了,却来了个大变脸,须重新审视 一番了.从头学习,记下笔记,以要点式. 1. Struts2 与 Struts1 似乎没什么血缘关系了,承自于 WebWork,直害 WebWork 不再推出新版本了,原先的 WebWork 使用者只需顺其然,即是水道渠成 :相反 Struts1 的开发经验对于 Struts2 却没有太大的帮助. 2. Struts1 的核心控制器是 ActionServlet,而 Struts2 的核心控制器是 FilterD

Unmi的Struts2学习笔记(十四)

生活中常为一些无伤大体之事优柔寡断,譬如买羽毛球拍是方头的还是圆头的 呢?电子产品是这款好还是那款好呢?拿此又放下,举彼又放下,最后靠概率来 决定.取其一,少段时间内总有些戚戚然,而后全然无所谓.小事无碍,大事可 就会后悔不及,无疑亦会让许多机会径直溜去. 1. 从此开始学习 Struts2 对 Ajax 的支持.这也是 Struts2 新注入的元素 .Struts2 的 Ajax 支持是建立在 Dojo 和 DWR 基础之上的.提供了 Ajax 的输 入检验,表单提交:pub-sub 事件模型

Unmi的Struts2学习笔记(十)

有一日,帮外公翻腾出他箱底的照片进行数字化留存,已是耄耋之年的外公端 详起那些记忆来,看到都是一同革命的热情小伙,不时感慨:唉!好多人都不在 啦! 1. <s:action .../> 可以用来在 JSP 页面直接调用 Action,用 name 指定 Action,executeResult(默认为 false) 指定是否包含那个 Action 转向视 图的内容:executeResult 会把视图的所有内容输出在标签位置. ignoreContextParams(默认为 false),是否

Unmi的Struts2学习笔记(五)

常有这样的梦:不知何来一本似乎是无字天书,而其中的字句却是慢慢地.渐 显可辨.同时现实中的自己完全能察觉这是一个梦,极怕即刻醒来,想多记取那 些天外之语.但总不能如愿,醒来时还留有某些字句痕迹,再过后就全然忘却. 仿佛进入的是一个太虚幻境. 1. 动态 Action:<action ../> 元素的一个前所未有的特性是,name 属性可以用通配符,class 和 method 属性中可以用 name 中的匹配参数,{0}/ {1} 的形式.举两个例子说明: ① <action name=

Unmi的Struts2学习笔记(三)

连续几日熬夜,以致左胸又起闷痛感,何来如此辛苦?不由自忖,人生至今, 印象中从来就没有过安逸与幸福感.常要回避刺疼. 1. WebWork 的核心控制器是 ServletDispatcher,映射到 *.action 的 <url-pattern> 即可.在 WebWork 与 Struts2 的 struts.xml 和 struts.properties 相对应的分别是 xwork.xml 和 webwork.properties,文件 内容几乎一样,只几个关键字的差异. 2. Strut

Unmi的Struts2学习笔记(十三)

柏杨在形容中国人不团结,喜欢窝里斗用了这样的话:每一个中国人都是一条 龙,但是三个中国人加在一起──三条龙加在一起,就成了一条猪.一条虫,甚至 连虫都不如--<丑陋的中国人>.可是他老人家走得走,要是能多有半个月的阳 寿,不知作有何感想. 1. <s:optiontransferselect.../> 正是考虑到通常使用而新加的用于 创建两个下拉框,可以来回移动列表项.有属性设置是否显示 "选定左移"."全 部左移"."选定右移&q

Unmi的Struts2学习笔记(十二)

上有所好,下必甚之.君不见屠宰场的墙头"以三个代表指导我们的屠宰工作 !" 发挥到极致:近来更是"和谐"泛滥,褒贬难分,诸如"创建人水和谐" 等 比比皆是.程序开发更需要务实,任凭天花乱坠都糊弄不了梗直的机器. 1. 初见 Struts2 的表单标签有 tooltip 以及 tooltipConfig 下的 tooltipBgColor 等属性,有一种砰然心动的感,本能的以为例如一个输入框,鼠 标悬停其中便出现一个 JS Tip 层,还可控制这个