之前工作中當遇到jsp在struts2取值的時候,對於# % 什麼的使用一直處於不太明白的狀態(雖然之前學習struts2的時候有學到過)。
今天再次遇到,整理一下。
struts2上下文如上圖所示。其中值棧裡的內容我們經常用到的主要就是當前action的屬性值。可以用s:debug標籤看到。
對於在jsp裡取值棧裡的值:<s:property
value
=
"artist.bio"
/>
值棧裡的值是可以「公升級」的,使用的是set標籤,其中可以用scope指明要公升級到的範圍:<
s:set
name
=
"artistname"
value
=
"artist.name"
scope
=
"session"
/>
這時候的取值:<
s:property
value
=
"#session['artistname']"
/>
可以看到,在非值棧(context)取值會加上#,這個是ognl語法。
特別要提到struts2的iterator標籤:
var定義的變數,不是在值棧裡的,我猜測是在attr裡面的(不確定,求大神指點。。。)。所以它的取值也需要加上#:
Struts2 中的值棧的理解
值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求到伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存action中的資料時,首先從棧頂開始 搜尋,若找到相同的屬性名 與要獲得的資料的屬性名相同 時,即將對應的值取出,但這種...
Struts2 中的值棧的理解
通過對struts2的一段時間的接觸,將自己對ognl的核心值棧說說,值棧 簡單的說,就是存放action的堆疊,當我們提交乙個請求道伺服器端 action時,就有個堆疊,如果action在伺服器端進行跳轉,所有action共用乙個堆疊,當需要儲存在action中的資料時,首先從棧頂開始 搜尋,若找...
struts2中對值棧的理解
struts2的interceptor一層一層,把action包裹在最裡面。這樣的結構,大概有以下一些特點 1.整個結構就如同乙個堆疊,除了action以外,堆疊中的其他元素是interceptor 2.action位於堆疊的底部。由於堆疊 先進後出 的特性,如果我們試圖把action拿出來執行,我...