posts - 495,  comments - 11,  trackbacks - 0

          OGNLStruts 2框架的默認表達式語言,增強了Struts 2的數據訪問能力,同時簡化了代碼。

          Struts 2OGNL表達式

          標準的OGNL會設定一個根對象(root對象)。假設使用標準OGNL表達式來求值(不使用Struts 2OGNL表達式),如果OGNL上下文(OgnlContext Map類型)有兩個對象:foo對象,在OgnlContext中名稱為foobar對象,在OgnlContext中名稱為bar。同時foo對象被設置為根對象(root)。則利用下面的OGNL表達式求值:

          // 返回foo.getBlah()
          #foo.blah
          //
          返回bar.getBlah()
          #bar.blah
          //
          返回foo.getBlah() ,因為foo為根對象
          blah

          說明

          使用OGNL是非常簡單的,如果要訪問的對象不是根對象,如示例中的bar對象,則需要使用命名空間,用“#”來標識,如“#bar”;如果訪問一個根對象,則不用指定命名空間,可以直接訪問根對象的屬性。

          Struts 2框架中,值棧(Value Stack)就是OGNL的根對象,假設值棧中存在兩個對對象實例:ManAnimal,這兩個對象實例都有一個name屬性,Animal有一個species屬性,Man有一個salary屬性,假設Animal在值棧的頂部,ManAnimal后面,下面的代碼片斷會幫助讀者更好地理解OGNL表達式:

          // 調用animal.getSpecies()
          species
          //
          調用man.getSalary()
          salary
          //
          調用animal.getName(),因為Animal位于值棧的頂部
          name


          最后一行示例代碼,返回的是animal.getName()返回值,即返回了Animalname屬性,因為Animal是值棧的頂部元素,OGNL將從頂部元素搜索,所以會返回Animalname屬性值。如果要獲得Manname值,則需要如下代碼:

          man.name

          Struts 2允許在值棧中使用索引,示例代碼如下所示:

          [0].name?? // 調用animal.getName()
          [1].name?? //
          調用man.getName()

          posted on 2009-08-15 17:18 jadmin 閱讀(90) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新源县| 蒲城县| 南和县| 临高县| 竹溪县| 平定县| 南雄市| 左云县| 汉源县| 遵化市| 马边| 上犹县| 济南市| 海宁市| 开平市| 成武县| 铜梁县| 湘乡市| 湖南省| 邳州市| 高阳县| 读书| 景洪市| 沈丘县| 吉林市| 德惠市| 兴文县| 周口市| 环江| 金湖县| 大港区| 莆田市| 延吉市| 崇州市| 静乐县| 盱眙县| 阜新市| 廉江市| 曲松县| 乌鲁木齐市| 萝北县|