我心飛翔
慢慢的度過
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆-200 評論-148 文章-15 trackbacks-0
OGNL表達(dá)式struts2標(biāo)簽“%,#,$”
一、什么是OGNL,有什么特點(diǎn)?
OGNL(Object-Graph
Navigation
Language),大概可以理解為:對象圖形化導(dǎo)航語言。是一種可以方便地操作對象屬性的開源表達(dá)式語言。OGNL有如下特點(diǎn):
1
、支持對象方法調(diào)用,形式如:objName.methodName();
2
、支持類靜態(tài)的方法調(diào)用和值訪問,表達(dá)式的格式為@[類全名(包括包路)]@[方法名
|
值名],例如:
@java
.lang.String
@format
(
'foo
%s'
,
'bar'
)或
@tutorial
.MyConstant
@APP_NAME
;
3
、支持賦值操作和表達(dá)式串聯(lián),例如:
price=
100
,
discount=
0.8
,
calculatePrice(),這個(gè)表達(dá)式會返回
80
;
4
、訪問OGNL上下文(OGNL
context)和ActionContext;
5
、操作集合對象。
二、使用OGNL表達(dá)式
OGNL要結(jié)合struts標(biāo)簽來使用。由于比較靈活,也容易把人給弄暈,尤其是“%”、“#”、“$”這三個(gè)符號的使用。由于$廣泛應(yīng)用于EL中,這里重點(diǎn)寫%和#符號的用法。
1
、“#”符號有三種用途:
(
1
)、訪問非根對象(struts中值棧為根對象)如OGNL上下文和Action上下文,#相當(dāng)于ActionContext.getContext();下表有幾個(gè)ActionContext中有用的屬性:
名稱
作用
例子
parameters
包含當(dāng)前HTTP請求參數(shù)的Map
#parameters.id[
0
]作用相當(dāng)于request.getParameter(
"id"
)
request
包含當(dāng)前HttpServletRequest的屬性(attribute)的Map
#request.userName相當(dāng)于request.getAttribute(
"userName"
)
session
包含當(dāng)前HttpSession的屬性(attribute)的Map
#session.userName相當(dāng)于session.getAttribute(
"userName"
)
application
包含當(dāng)前應(yīng)用的ServletContext的屬性(attribute)的Map
#application.userName相當(dāng)于application.getAttribute(
"userName"
)
注:attr
用于按request
>
session
>
application順序訪問其屬性(attribute),#attr.userName相當(dāng)于按順序在以上三個(gè)范圍(scope)內(nèi)讀取userName屬性,直到找到為止。用于過濾和投影(projecting)集合,如books.{?#
this
.price<
100
};構(gòu)造Map,如#{
'foo1'
:
'bar1'
,
'foo2'
:
'bar2'
}。
(
2
)、用于過濾和投影(projecting)集合,如:
books.{?#
this
.price>
35
}
books.{?#
this
.price>
35
}
(
3
)、構(gòu)造Map,如:
#{
'foo1'
:
'bar1'
,
'foo2'
:
'bar2'
}
#{
'foo1'
:
'bar1'
,
'foo2'
:
'bar2'
}這種方式常用在給radio或select、checkbox等標(biāo)簽賦值上。如果要在頁面中取一個(gè)map的值可以這樣寫:
<s:property
value=
"#myMap['foo1']"
/>
<s:property
value=
"#myMap['foo1']"
/>
2
、“%”符號的用途是在標(biāo)簽的屬性值被理解為字符串類型時(shí),告訴執(zhí)行環(huán)境%{}里的是OGNL表達(dá)式。
這是一開始最讓我不能理解的符號,原因是一些相關(guān)資源在表述時(shí)不太準(zhǔn)備,經(jīng)過一翻痛苦的探索,終于明白了它的用途。實(shí)際上就是讓被理解為字符串的表達(dá)式,被真正當(dāng)成ognl來執(zhí)行。很有點(diǎn)類似javascript里面的eval_r()功能,例如
:
var
oDiv
=
eval_r(
"document.all.div"
+index)
var
oDiv
=
eval_r(
"document.all.div"
+index)
當(dāng)index變量為
1
時(shí),語句就會被當(dāng)作var
oDiv
=
document.all.div1
var
oDiv
=
document.all.div1來執(zhí)行。%{}就是起這個(gè)作用。舉例:
<s:set
name=
"myMap"
value=
"#{'key1':'value1','key2':'value2'}"
/>
<s:property
value=
"#myMap['key1']"
/>
<s:url
value=
"#myMap['key1']"
/>
<s:set
name=
"myMap"
value=
"#{'key1':'value1','key2':'value2'}"
/>
<s:property
value=
"#myMap['key1']"
/>
<s:url
value=
"#myMap['key1']"
/>
上面的代碼第
2
行會在頁面上輸出“value1”,而第
3
行則會輸出
"#myMap['key1']"
這么一個(gè)字符串。
如果將第
3
行改寫成這樣:
<s:url
value=
"%{#myMap['key1']}"
/>
<s:url
value=
"%{#myMap['key1']}"
/>
則輸出為“value1”。
這說明struts2里不同的標(biāo)簽對ognl的表達(dá)式的理解是不一樣的。如果當(dāng)有的標(biāo)簽“看不懂”類似“#myMap[
'key1'
]”的語句時(shí),就要用%{}來把這括進(jìn)去,“翻譯”一下了。
3
、“$”有兩種用途
(
1
)、在國際化資源文件中,引用OGNL表達(dá)式。
(
2
)、在Struts
2
配置文件中,引用OGNL表達(dá)式:
<action
name=
"saveUser"
class
=
"userAction"
method=
"save"
>
<result
type=
"redirect"
>listUser.action?msg=${msg}</result>
</action>
<action
name=
"saveUser"
class
=
"userAction"
method=
"save"
>
<result
type=
"redirect"
>listUser.action?msg=${msg}</result>
</action>
posted on 2010-10-28 10:25
無聲
閱讀(78791)
評論(6)
編輯
收藏
所屬分類:
職場生活
評論:
#
re: OGNL表達(dá)式struts2標(biāo)簽“%,#,$” 2010-12-31 11:25 |
383392964
能否為:<result type="${result}">listUser.action?msg=${msg}</result>
QQ:383392964,qqE-mail我,謝謝啦
回復(fù)
更多評論
#
re: OGNL表達(dá)式struts2標(biāo)簽“%,#,$” 2013-03-01 16:31 |
9
1234567890
回復(fù)
更多評論
#
re: OGNL表達(dá)式struts2標(biāo)簽“%,#,$” 2013-06-19 11:27 |
asda
dasds
回復(fù)
更多評論
#
re: OGNL表達(dá)式struts2標(biāo)簽“%,#,$”[未登錄] 2014-04-14 23:29 |
等待
頂頂頂
回復(fù)
更多評論
#
re: OGNL表達(dá)式struts2標(biāo)簽“%,#,$” 2014-05-29 14:18 |
路飛
不錯(cuò),講的很詳細(xì)!
回復(fù)
更多評論
#
是[未登錄]
2014-09-04 08:51 |
dd
很好
回復(fù)
更多評論
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
kettle ETL java 調(diào)用 kettle job 或 transfer
轉(zhuǎn)win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解決辦法
Java 獲取當(dāng)前日期和時(shí)間
清除目錄下的SVN信息
Linux下使用gzip壓縮與解壓文件
Linux 下ftp自動登錄
struts1.x防止重復(fù)提交
C#正則表達(dá)式小結(jié)
jbpm4 java.lang.LinkageError: loader constraint violation 包沖突
c#web定時(shí)任務(wù)
道可道非常道,名可名非常名
<
2010年10月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊(duì)
JLive開發(fā)團(tuán)隊(duì)(0/0)
隨筆分類
(174)
回歸自然(9)
職場生活(165)
隨筆檔案
(200)
2014年3月 (2)
2014年1月 (1)
2013年9月 (2)
2013年2月 (1)
2013年1月 (2)
2012年8月 (1)
2012年6月 (1)
2012年1月 (1)
2011年12月 (1)
2010年12月 (3)
2010年11月 (10)
2010年10月 (12)
2010年9月 (3)
2010年8月 (5)
2010年7月 (3)
2010年6月 (3)
2010年5月 (1)
2010年4月 (1)
2010年2月 (2)
2010年1月 (2)
2009年11月 (1)
2009年8月 (1)
2009年3月 (3)
2009年2月 (7)
2008年12月 (1)
2008年11月 (1)
2008年9月 (3)
2008年8月 (4)
2008年7月 (4)
2008年6月 (8)
2008年5月 (4)
2008年4月 (4)
2008年2月 (2)
2008年1月 (9)
2007年12月 (11)
2007年11月 (1)
2007年10月 (6)
2007年9月 (1)
2007年8月 (2)
2007年7月 (1)
2007年6月 (1)
2007年5月 (6)
2007年4月 (6)
2006年12月 (9)
2006年11月 (7)
2006年10月 (9)
2006年9月 (5)
2006年7月 (12)
2006年6月 (14)
文章分類
(20)
AJAX(3)
Ant(1)
Delphi(1)
Eclipse(1)
Hibernate(3)
java共享代碼(5)
JBOSS(1)
JSF
linux(4)
Oracle(1)
Spring
sqlserver2000
Struts
Tapestry
webspehre
文章檔案
(15)
2007年6月 (2)
2006年11月 (1)
2006年10月 (5)
2006年6月 (7)
收藏夾
共享代碼
開源網(wǎng)站
ajax中國
finereport
hibernate
Java開源大全
java技術(shù)論壇
java論壇
java論壇
用戶名parable
linux伊甸園
luanyong
oracle下載
oracle資源
Struts插件
這個(gè)插件功能強(qiáng)大,包括JSF,struts,hibernate等
unix論壇
開源力量社區(qū)
源程序網(wǎng)站
資料中心
資源網(wǎng)站
parable
朋友博客
東東男
我的博客
最新隨筆
1.?kettle ETL java 調(diào)用 kettle job 或 transfer
2.?etl一個(gè)例子
3.?論壇
4.?Spring 3.2.4源碼編譯
5.?轉(zhuǎn)win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解決辦法
6.?crontab配置詳解
7.?將JSON轉(zhuǎn)換成MAP的工具類
8.? Java 獲取當(dāng)前日期和時(shí)間
9.?清除目錄下的SVN信息
10.?Symantec 卸載密碼方法
搜索
最新評論
1.?re: 攔截器底層實(shí)現(xiàn)原理
政治
--ttt
2.?re: js動態(tài)修改表格
454545
--35454
3.?re: ajax局部刷新
jkkhhhl
--34
4.?re: 將JSON轉(zhuǎn)換成MAP的工具類
v instanceof JSONArray 這段代碼有問題
需要對
List<String>做處理
--丹丹
5.?re: 將JSON轉(zhuǎn)換成MAP的工具類
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--丹丹
閱讀排行榜
1.?OGNL表達(dá)式struts2標(biāo)簽“%,#,$”(78791)
2.?linux 設(shè)置系統(tǒng)語言(44867)
3.? Java 獲取當(dāng)前日期和時(shí)間(40393)
4.?Linux下使用gzip壓縮與解壓文件(30902)
5.?將JSON轉(zhuǎn)換成MAP的工具類(22073)
評論排行榜
1.? RHEL 5 Install Number(16)
2.?ajax局部刷新(8)
3.?RHEL4-U3-i386-AS下載地址(7)
4.?將JSON轉(zhuǎn)換成MAP的工具類(7)
5.?OGNL表達(dá)式struts2標(biāo)簽“%,#,$”(6)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 無聲
主站蜘蛛池模板:
亚洲校园春色另类激情
|
亚洲乱码中文字幕小综合
|
在线观看国产一区亚洲bd
|
24小时日本在线www免费的
|
亚洲综合男人的天堂色婷婷
|
国产成人精品无码免费看
|
国产精品亚洲аv无码播放
|
久久免费视频观看
|
亚洲AV日韩精品久久久久
|
久久永久免费人妻精品下载
|
亚洲国产精品综合久久网络
|
99亚洲精品卡2卡三卡4卡2卡
|
国产片免费在线观看
|
污视频网站免费观看
|
乱爱性全过程免费视频
|
无码日韩人妻av一区免费
|
中文字幕亚洲情99在线
|
免费在线观看视频a
|
成在人线av无码免费高潮水
|
亚洲AV成人片色在线观看
|
中国一级特黄高清免费的大片中国一级黄色片
|
自拍偷自拍亚洲精品偷一
|
亚洲国产aⅴ综合网
|
久久黄色免费网站
|
亚洲伊人久久大香线蕉影院
|
国产网站在线免费观看
|
中文成人久久久久影院免费观看
|
久久久亚洲欧洲日产国码aⅴ
|
成人午夜大片免费7777
|
久久99久久成人免费播放
|
亚洲 国产 图片
|
日本高清不卡aⅴ免费网站
|
亚洲另类春色校园小说
|
免费一级成人毛片
|
久久国产乱子免费精品
|
最新亚洲精品国偷自产在线
|
国产亚洲精品高清在线
|
一二三四在线播放免费观看中文版视频
|
日韩精品无码专区免费播放
|
亚洲爆乳AAA无码专区
|
国产亚洲人成网站在线观看不卡
|