struts2中 # % $ 的區別和用法

struts2 OGNL,struts2 表達式語言,Struts2 中OGNL表達式的用法,Struts2 #,表達式語言的好處,Struts2 $,struts2 井號,星號,百分號


表達式語言主要有以下幾大好處:   
   
   1. 避免(MyType) request.getAttribute()和myBean.getMyProperty()之類的語句,使頁面更簡潔;   
   2. 支持運算符(如+-*/),比普通的標誌具有更高的自由度和更強的功能;   
   3. 簡單明瞭地表達代碼邏輯,使用代碼更可讀與便於維護。 


Struts2 中OGNL表達式的用法:

OGNL(Object-Graph Navigation Language),可以方便地操作對象屬性的開源表達式語言;

“#”主要有三種用途:   
   
   1. 訪問OGNL上下文和Action上下文,#相當於ActionContext.getContext();下表有幾個ActionContext中有用的屬性:   
       名稱   作用 例子   
      parameters    包含當前HTTP請求參數的Map    #parameters.id[0]作用相當於request.getParameter("id")   
      request   包含當前HttpServletRequest的屬性(attribute)的Map    #request.userName相當於request.getAttribute("userName")   
      session   包含當前HttpSession的屬性(attribute)的Map   #session.userName相當於session.getAttribute("userName")   
      application   包含當前應用的ServletContext的屬性(attribute)的Map     #application.userName相當於application.getAttribute("userName")   
      attr 用於按request > session > application順序訪問其屬性(attribute)    #attr.userName相當於按順序在以上三個範圍(scope)內讀取userName屬性,直到找到爲止   
   2. 用於過濾和投影(projecting)集合,如books.{?#this.price<100};   
   3. 構造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。   


“%”的用途是在標誌的屬性爲字符串類型時,計算OGNL表達式的值。例如在Ognl.jsp中加入以下代碼:   
<hr />   
    <h3>%的用途</h3>   
    <p><s:url value="#foobar['foo1']" /></p>   
    <p><s:url value="%{#foobar['foo1']}" /></p>   


“$”有兩個主要的用途 :    
   1. 用於在國際化資源文件中,引用OGNL表達式,例子請參考《在Struts 2.0中國際化(i18n)您的應用程序》   
   2. 在Struts 2配置文件中,引用OGNL表達式,如   
      <action name="AddPhoto" class="addPhoto">   
                  <interceptor-ref name="fileUploadStack" />               
                  <result type="redirect">ListPhotos.action?albumId=${albumId}</result>   
              </action>

 

 

 

 

 

例如: Struts2 在標籤的ID屬性中 獲取 索引:

 

<s:iterator value="userList" status="u"> 
   <s:hidden id="%{u.index }" value="%{name }"></s:hidden> 
   <s:hidden id="%{u.index }" value="%{sex }"></s:hidden> 
</s:iterator> 
//注意: 
//Struts2標籤與內部標籤之間元素互用使用%{u.index }或者%{#u.index },比如:<s:iterator> 與<s:a> 

//Struts2標籤與外部標籤元素互用則使用 ${#u.index } 比如:<s:iterator>與<a> 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章