久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

OGNL表達式struts2標簽

 vivian home 2011-04-02
  1. 一、什么是OGNL,,有什么特點,?   
  2.   
  3. OGNL(Object-Graph Navigation Language),大概可以理解為:對象圖形化導(dǎo)航語言。是一種可以方便地操作對象屬性的開源表達式語言,。OGNL有如下特點:    
  4.   
  5. 1,、支持對象方法調(diào)用,形式如:objName.methodName(),;   
  6.   
  7. 2,、支持類靜態(tài)的方法調(diào)用和值訪問,表達式的格式為@[類全名(包括包路)]@[方法名  值名],,例如:   
  8.   
  9. @java.lang.String@format('foo %s''bar')或@tutorial.MyConstant@APP_NAME,;   
  10.   
  11. 3、支持賦值操作和表達式串聯(lián),,例如:   
  12.   
  13. price=100discount=0.8calculatePrice(),,這個表達式會返回80;   
  14.   
  15. 4,、訪問OGNL上下文(OGNL context)和ActionContext,;   
  16.   
  17. 5、操作集合對象,。   
  18.   
  19.     
  20.   
  21. 二,、使用OGNL表達式   
  22.   
  23. OGNL要結(jié)合struts標簽來使用。由于比較靈活,,也容易把人給弄暈,,尤其是“%”、“#”,、“$”這三個符號的使用,。由于$廣泛應(yīng)用于EL中,這里重點寫%和#符號的用法,。   
  24.   
  25. 1,、“#”符號有三種用途:   
  26.   
  27. (1)、訪問非根對象(struts中值棧為根對象)如OGNL上下文和Action上下文,,#相當于ActionContext.getContext(),;下表有幾個ActionContext中有用的屬性:   
  28.   
  29.     
  30.   
  31. 名稱   
  32.  作用   
  33.  例子   
  34.     
  35. parameters   
  36.  包含當前HTTP請求參數(shù)的Map   
  37.  #parameters.id[0]作用相當于request.getParameter("id"   
  38.     
  39. request   
  40.  包含當前HttpServletRequest的屬性(attribute)的Map   
  41.  #request.userName相當于request.getAttribute("userName"   
  42.     
  43. session   
  44.  包含當前HttpSession的屬性(attribute)的Map   
  45.  #session.userName相當于session.getAttribute("userName"   
  46.     
  47. application   
  48.  包含當前應(yīng)用的ServletContext的屬性(attribute)的Map   
  49.  #application.userName相當于application.getAttribute("userName"   
  50.     
  51.   
  52. 注:attr 用于按request session application順序訪問其屬性(attribute),#attr.userName相當于按順序在以上三個范圍(scope)內(nèi)讀取userName屬性,,直到找到為止。用于過濾和投影(projecting)集合,,如books.{?#this.price<100},;構(gòu)造Map,如#{'foo1':'bar1''foo2':'bar2'},。   
  53.   
  54.     
  55.   
  56. (2),、用于過濾和投影(projecting)集合,如: books.{?#this.price>35    
  57.   
  58. books.{?#this.price>35}   
  59.   
  60. (3)、構(gòu)造Map,,如: #{'foo1':'bar1''foo2':'bar2'    
  61.   
  62. #{'foo1':'bar1''foo2':'bar2'}這種方式常用在給radio或select,、checkbox等標簽賦值上。如果要在頁面中取一個map的值可以這樣寫:    
  63.   
  64. <s:property value="#myMap['foo1']"/>     
  65.   
  66. <s:property value="#myMap['foo1']"/>   
  67.   
  68. 2,、“%”符號的用途是在標簽的屬性值被理解為字符串類型時,,告訴執(zhí)行環(huán)境%{}里的是OGNL表達式。   
  69.   
  70. 這是一開始最讓我不能理解的符號,,原因是一些相關(guān)資源在表述時不太準備,,經(jīng)過一翻痛苦的探索,終于明白了它的用途,。實際上就是讓被理解為字符串的表達式,,被真正當成ognl來執(zhí)行。很有點類似javascript里面的eval_r()功能,,例如 :   
  71.   
  72. var oDiv eval_r("document.all.div"+index)     
  73.   
  74. var oDiv eval_r("document.all.div"+index)   
  75.   
  76. 當index變量為1時,,語句就會被當作var oDiv document.all.div1  var oDiv document.all.div1來執(zhí)行。%{}就是起這個作用,。舉例:    
  77.   
  78. <s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>      
  79.   
  80. <s:property value="#myMap['key1']"/>      
  81.   
  82. <s:url value="#myMap['key1']" />    
  83.   
  84. <s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>   
  85.   
  86. <s:property value="#myMap['key1']"/>   
  87.   
  88. <s:url value="#myMap['key1']"/>   
  89.   
  90. 上面的代碼第2行會在頁面上輸出“value1”,,而第3行則會輸出"#myMap['key1']"這么一個字符串。 如果將第3行改寫成這樣:    
  91.   
  92. <s:url value="%{#myMap['key1']}"/>     
  93.   
  94. <s:url value="%{#myMap['key1']}"/>   
  95.   
  96. 則輸出為“value1”,。   
  97.   
  98.     
  99.   
  100.     
  101.   
  102. 這說明struts2里不同的標簽對ognl的表達式的理解是不一樣的,。如果當有的標簽“看不懂”類似“#myMap['key1']”的語句時,就要用%{}來把這括進去,,“翻譯”一下了,。   
  103.   
  104. 3、“$”有兩種用途   
  105.   
  106. (1),、在國際化資源文件中,,引用OGNL表達式。   
  107.   
  108. (2),、在Struts 2配置文件中,,引用OGNL表達式:    
  109.   
  110. <action name="saveUser" class="userAction" method="save">   
  111.   
  112. <result type="redirect">listUser.action?msg=${msg}</result>   
  113.   
  114. </action>   
  115.   
  116. <action name="saveUser" class="userAction" method="save"      
  117.   
  118. <result type="redirect">listUser.action?msg=${msg}</result>   
  119.   
  120. </action> 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多