1. 程式人生 > >細談struts2(十)ognl概念和原理詳解

細談struts2(十)ognl概念和原理詳解

       在struts2中,根物件ValueStack的實現類為OgnlValueStack,該物件不是我們想像的只存放單個值,而是存放一組物件。在OgnlValueStack類裡有一個List型別的root變數,就是使用他存放一組物件 |--request |--application context ------|--OgnlValueStack root變數[action, OgnlUtil, ... ] |--session |--attr |--parameters,root變數中處於第一位的物件叫棧頂物件。通常我們在OGNL表示式裡直接寫上屬性的名稱即可訪問root變數裡物件的屬性,搜尋順序是從棧頂物件開始尋找,如果棧頂物件不存在該屬性,就會從第二個物件尋找,如果沒有找到就從第三個物件尋找,依次往下訪問,直到找到為止。 大家注意: 
Struts2中,OGNL表示式需要配合Struts標籤才可以使用。如:<s:property value="name"/>

       由於ValueStack(值棧)Struts 2OGNL的根物件,如果使用者需要訪問值棧中的物件,在JSP頁面可以直接通過下面的EL表示式訪問ValueStack(值棧)中物件的屬性: ${foo} //獲得值棧中某個物件的foo屬性。如果訪問其他Context中的物件,由於他們不是根物件,所以在訪問時,需要新增#字首。