el表達式跟ognl表達式的區別

1.區別

用法區別:OGNL是一般要結合Struts 2的標誌一塊兒使用,如<s:property value="#xx" /> struts頁面中不能單獨使用,el能夠單獨使用 ${sessionScope.username}html

頁面取值區別:session

 image

用於按request > session > application順序訪問其屬性(attribute)app

#attr.userName至關於按順序在以上三個範圍(scope)內讀取userName屬性,直到找到爲框架

2.ognl講解

OGNLStruts 2默認的表達式語言。是Object Graphic Navigation Language(對象圖導航語言)的縮寫,它是一個開源項目。this

1.#符號的用途通常有三種。
   1)訪問非根對象屬性,例如示例中的#session.msg表達式,因爲Struts 2中值棧被視爲根對象,因此訪問其餘非根對象時,須要加#前綴。實際上,#至關於ActionContext.getContext();;#session.msg表達式至關於ActionContext.getContext().getSession(). getAttribute(」msg」) 。
    2)用於過濾和投影(projecting)集合,如示例中的persons.{?#this.age>20}。url

    3)用來構造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。.net

2.%符號
%符號的用途是在標誌的屬性爲字符串類型時,計算OGNL表達式的值。以下面的代碼所示:
構造Maphtm

[html] view plaincopy對象

  1. <s:set name=」foobar」 value=」#{’foo1′:’bar1′, ‘foo2′:’bar2′}」 />
  2. <p>The value of key 「foo1″ is <s:property value=」#foobar['foo1']」 /></p>
  3. <p>不使用%:<s:url value=」#foobar['foo1']」 /></p>
  4. <p>使用%:<s:url value=」%{#foobar['foo1']}」 /></p>

3.$符號blog

$符號主要有兩個方面的用途。
   在國際化資源文件中,引用OGNL表達式,例如國際化資源文件中的代碼:reg.agerange=國際化資源信息:年齡必須在${min}同${max}之間。
    在Struts 2框架的配置文件中引用OGNL表達式,例以下面的代碼片段所示:

[html] view plaincopy

  1. <validators>
  2. <field name=」intb」>
  3. <field-validator type=」int」>
  4. <param name=」min」>10</param>
  5. <param name=」max」>100</param>
  6. <message>BAction-test校驗:數字必須爲${min}爲${max}之間!</message>
  7. </field-validator>
  8. </field>
  9. </validators>
相關文章
相關標籤/搜索