kelly的小空間
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
隨筆 - 72 文章 - 28 trackbacks - 0
<
2014年1月
>
日
一
二
三
四
五
六
29
30
31
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
7
8
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(4)
給我留言
查看公開留言
查看私人留言
隨筆分類
(66)
java(32)
java 框架(14)
Linux(10)
MYSQL(1)
oracle(5)
others(4)
隨筆檔案
(72)
2015年10月 (2)
2015年6月 (1)
2015年3月 (1)
2014年11月 (2)
2014年1月 (12)
2013年12月 (7)
2013年11月 (3)
2013年4月 (1)
2013年2月 (1)
2011年10月 (9)
2011年9月 (3)
2011年6月 (1)
2011年3月 (1)
2011年2月 (1)
2010年12月 (1)
2009年5月 (2)
2008年1月 (2)
2007年12月 (2)
2007年9月 (1)
2007年4月 (1)
2007年3月 (2)
2007年1月 (2)
2006年12月 (5)
2006年11月 (3)
2005年8月 (3)
2005年6月 (3)
文章檔案
(19)
2011年4月 (2)
2011年2月 (1)
2010年12月 (2)
2010年11月 (5)
2010年10月 (3)
2010年8月 (1)
2010年7月 (4)
2006年11月 (1)
收藏夾
什么是“雙低”個股 封起De日子
搜索
最新評論
1.?re: Spring MVC使用HttpClient返回json報406錯誤解決辦法
iii
--ii
2.?re: 用java實現(xiàn)打印功能
請問可不可以發(fā)一個詳細點的用遠程網(wǎng)絡(luò)打印機打印的到我郵箱562428092@qq.com
--李麗
3.?re: JDK6.0下載,JDK1.5下載,eclipse3.2中文版下載 linux安裝配置jdk1 (轉(zhuǎn)載)
下載jdk1.5的中文版網(wǎng)址?
--學(xué)習(xí)生活9484
4.?re: JDK6.0下載,JDK1.5下載,eclipse3.2中文版下載 linux安裝配置jdk1 (轉(zhuǎn)載)
評論內(nèi)容較長,點擊標題查看
--學(xué)習(xí)生活9484
5.?re: ASP自動下載圖片
評論內(nèi)容較長,點擊標題查看
--sysdzw
閱讀排行榜
1.?用java實現(xiàn)打印功能(57348)
2.?java處理日期時間 相加減大全(28807)
3.?Spring MVC使用HttpClient返回json報406錯誤解決辦法(14149)
4.?JDK6.0下載,JDK1.5下載,eclipse3.2中文版下載 linux安裝配置jdk1 (轉(zhuǎn)載)(6042)
5.? Maven創(chuàng)建An internal error occurred during: "Retrieving archetypes:". Java heap space(5315)
評論排行榜
1.?用java實現(xiàn)打印功能(14)
2.?JDK6.0下載,JDK1.5下載,eclipse3.2中文版下載 linux安裝配置jdk1 (轉(zhuǎn)載)(4)
3.?ASP自動下載圖片(3)
4.?JSP中文亂碼解決方案-Tomcat5.0版(1)
5.?實現(xiàn)IE全屏顯示(1)
OGNL表達式struts2標簽“%,#,$”
一、什么是OGNL,有什么特點?
OGNL(Object-Graph
Navigation
Language),大概可以理解為:對象圖形化導(dǎo)航語言。是一種可以方便地操作對象屬性的開源表達式語言。OGNL有如下特點:
1
、支持對象方法調(diào)用,形式如:objName.methodName();
2
、支持類靜態(tài)的方法調(diào)用和值訪問,表達式的格式為@[類全名(包括包路)]@[方法名
|
值名],例如:
@java
.lang.String
@format
(
'foo
%s'
,
'bar'
)或
@tutorial
.MyConstant
@APP_NAME
;
3
、支持賦值操作和表達式串聯(lián),例如:
price=
100
,
discount=
0.8
,
calculatePrice(),這個表達式會返回
80
;
4
、訪問OGNL上下文(OGNL
context)和ActionContext;
5
、操作集合對象。
二、使用OGNL表達式
OGNL要結(jié)合struts標簽來使用。由于比較靈活,也容易把人給弄暈,尤其是“%”、“#”、“$”這三個符號的使用。由于$廣泛應(yīng)用于EL中,這里重點寫%和#符號的用法。
1
、“#”符號有三種用途:
(
1
)、訪問非根對象(struts中值棧為根對象)如OGNL上下文和Action上下文,#相當(dāng)于ActionContext.getContext();下表有幾個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)于按順序在以上三個范圍(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等標簽賦值上。如果要在頁面中取一個map的值可以這樣寫:
<s:property
value=
"#myMap['foo1']"
/>
<s:property
value=
"#myMap['foo1']"
/>
2
、“%”符號的用途是在標簽的屬性值被理解為字符串類型時,告訴執(zhí)行環(huán)境%{}里的是OGNL表達式。
這是一開始最讓我不能理解的符號,原因是一些相關(guān)資源在表述時不太準備,經(jīng)過一翻痛苦的探索,終于明白了它的用途。實際上就是讓被理解為字符串的表達式,被真正當(dāng)成ognl來執(zhí)行。很有點類似javascript里面的eval_r()功能,例如
:
var
oDiv
=
eval_r(
"document.all.div"
+index)
var
oDiv
=
eval_r(
"document.all.div"
+index)
當(dāng)index變量為
1
時,語句就會被當(dāng)作var
oDiv
=
document.all.div1
var
oDiv
=
document.all.div1來執(zhí)行。%{}就是起這個作用。舉例:
<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']"
這么一個字符串。
如果將第
3
行改寫成這樣:
<s:url
value=
"%{#myMap['key1']}"
/>
<s:url
value=
"%{#myMap['key1']}"
/>
則輸出為“value1”。
這說明struts2里不同的標簽對ognl的表達式的理解是不一樣的。如果當(dāng)有的標簽“看不懂”類似“#myMap[
'key1'
]”的語句時,就要用%{}來把這括進去,“翻譯”一下了。
3
、“$”有兩種用途
(
1
)、在國際化資源文件中,引用OGNL表達式。
(
2
)、在Struts
2
配置文件中,引用OGNL表達式:
<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 2014-01-08 13:58
kelly
閱讀(211)
評論(0)
編輯
收藏
所屬分類:
java 框架
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
Struts2整合Spring從xml到注解
Spring注解講解
Struts2.3+Spring3.2的整合
No configuration found for the specified action
簡單Struts2實例(入門級)-轉(zhuǎn)
Struts2基于注解的Action配置
Struts2教程1:第一個Struts2程序 -轉(zhuǎn)
Ibatis+spring整合集成開發(fā)-【原創(chuàng)】
struts2底層中如何將表單值傳入Action
OGNL表達式struts2標簽“%,#,$”
Copyright ©2025 kelly Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
无人视频免费观看免费视频
|
91短视频免费在线观看
|
国产亚洲一区区二区在线
|
四虎在线播放免费永久视频
|
亚洲人成电影网站色www
|
国产小视频在线观看免费
|
亚洲heyzo专区无码综合
|
成人免费福利电影
|
亚洲AV无码男人的天堂
|
国产小视频免费观看
|
看免费毛片天天看
|
中文字幕在亚洲第一在线
|
中文在线免费观看
|
亚洲国产国产综合一区首页
|
亚洲视频在线免费播放
|
亚洲日韩乱码中文字幕
|
亚洲成a人片在线播放
|
a视频在线免费观看
|
久久久久久亚洲AV无码专区
|
无码国产精品一区二区免费式直播
|
亚洲av成人综合网
|
国产高清免费观看
|
在线观看免费视频网站色
|
久久亚洲AV无码精品色午夜麻豆
|
日韩免费精品视频
|
国产精品亚洲综合网站
|
国产亚洲AV夜间福利香蕉149
|
久久国产精品国产自线拍免费
|
亚洲大片免费观看
|
国产成人免费片在线观看
|
成全视成人免费观看在线看
|
久久精品国产亚洲av高清漫画
|
午夜色a大片在线观看免费
|
一级A毛片免费观看久久精品
|
色拍自拍亚洲综合图区
|
国产男女猛烈无遮挡免费网站
|
在线观看免费黄色网址
|
亚洲午夜无码毛片av久久京东热
|
亚洲日韩国产一区二区三区
|
巨波霸乳在线永久免费视频
|
国产AV旡码专区亚洲AV苍井空
|