struts2。0 三種符號的用法

在做struts2項目中經常遇到 “#”,“%”,“$”三種表達式符號,一直都是糊里糊塗的用着,至於他們的區別也不太清楚,後來從網上查了一些資料,記下來以備查閱。

“#”主要有三種用途:  
  
   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>

<script type="text/javascript"><!-- google_ad_client = "pub-4348265167276910"; /* 468x60, 個人博客 */ google_ad_slot = "2046406163"; google_ad_width = 468; google_ad_height = 60; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script> <script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script> <script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script> <script>google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章