程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> OGNL和ValueStack,OGNLValueStack

OGNL和ValueStack,OGNLValueStack

編輯:JAVA綜合教程

OGNL和ValueStack,OGNLValueStack


OGNL簡介

   

OGNL的全稱是Object Graph Navigation Language,即對象導航圖語言。它是一個開源項目,工作在視圖層,其通過簡單一致的表達式語言來讀取合適者Java對象的屬性值,調用對象的方法,遍歷整個對象的結構圖,實現字段類型的轉換。

OGNL簡介

   

OGNL的計算都是圍繞著OGNL上下文來進行的,OGNL上下文實際就是一個Map集合,由ognl.OgnlContext類來表示(其被封裝到ActionContext中)。其可以包含一個或多個上下文對象。

先面以一個例子來介紹OGNL表達式的使用

普通Action類代碼:

image

省略action配置信息。。。

視圖頁面代碼:

image

   

通過上面的例子我們發現在Action類中我們使用了兩種方式向ValueStack中賦值,且在視圖頁面進行讀取時的語法也不一樣,只是為什麼呢?這就要說到ValueStack了。

ValueStack

   

ValueStack也就是值棧,簡單的來說,值棧就是框架創建的一個存儲區域,用來保存Model對象。它具有棧的特性,可以存放多個對象。

在視圖頁面中我們也可以使用<s:debug></s:debug>標簽來查看值棧中的信息,如圖所示:

image

   

從上圖中我們可以看出頁面顯示的ValueStack中大致劃分了Value Stack Contents和 Stack Context兩塊兒區域,其中Value Stack Contents是Root對象其以ArrayList的形式存放數據。OGNL表達式語言可以直接通過Property Name名稱來獲取其對應的值。而Stack Context中的數據則存放在Context中其是以map集合的形式來存放數據的。在是用OGNL表達式來訪問時需要加上“#”作為前綴。

ActionContext中還有其他的對象這裡就不在進行一一講述,他們可以使用OGNL表達式語言來進行操作。但是除了Root對象中的值以外訪問其他的值是都需要加上“#”作為前綴!

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved