posts - 495,  comments - 11,  trackbacks - 0

          OGNL是Object Graph Navigation Language的縮寫,與JSP,JSF相比,OGNL是一種功能非常強大的針對Java的表達式語言(EL),它可用來讀取和更新Java對象的屬性。

          OGNL可以用在以下方面:
          - 用做數(shù)據(jù)綁定語言用來綁定GUI元素(textfield, combobox等)到模型對象
          - 用做數(shù)據(jù)源語言用來映射數(shù)據(jù)庫表到表模型對象
          - 用做數(shù)據(jù)綁定語言用來綁定web組件到數(shù)據(jù)模型(WebOGNLTapestryWebWork等)
          - 提供類似Jakarta Commons BeanUtils所提供的功能(讀取Java對象的屬性)

          OGNL表達式語法:
          Java標準類型:
          bool類型:true,false
          int類型:10, 0xABCD等
          long類型:100L
          float類型:1.0, 0.5F等
          double類型:0.01D
          char類型:'A', '\uFFFF'等
          字符串類型:"Hello World!"
          null

          OGNL獨自類型:
          例:10.01B,相當于java.math.BigDecimal
          例:100000H,相當于java.math.BigInteger

          OGNL表達式中能使用的操作符號:
          OGNL表達式中能使用的操作符基本跟Java里的操作符一樣,除了能使用 +, -, *, /, ++, --, ==, !=, = 等操作符之外,還能使用 mod, in, not in等

          變量的引用:
          使用方法:#變量名
          例:#this, #user.name

          對靜態(tài)方法或變量的訪問:
          @mypkg.MyClass@myVar
          @mypkg.MyClass@myMethod()

          讀取變量值:
          例:user.address.countryName

          方法調用:
          例:user.getName()

          對象的創(chuàng)建:
          new java.net.URL("http://localhost/")

          List表達式例:
          {"green", "red", "blue"}


          Map表達式例:
          #{"key1" : "value1", "key2" : "value2", "key3" : "value3"}
          對map引用,例:map.key1

          等等。

          OGNL官方首頁:
          http://www.ognl.org/

          OGNL官方文檔 (2.6.9)
          OGNL Language Guide (2.6.9)

          附:
          OGNL使用例:
          1. package com.test.ognl; ??
          2. import java.util.HashMap; ??
          3. import java.util.List; ??
          4. import java.util.Map; ??
          5. ??
          6. import junit.framework.TestCase; ??
          7. import ognl.Ognl; ??
          8. import ognl.OgnlContext; ??
          9. ??
          10. public class OgnlTest extends TestCase { ??
          11. ????public void testGetValue() throws Exception { ??
          12. ???????? OgnlContext context = new OgnlContext(); ??
          13. ???????? Book book = new Book("book1"); ??
          14. ???????? context.put("book", book); ??
          15. ??
          16. ????????final String expression = "book.name"; ??
          17. ???????? Object parseExpression = Ognl.parseExpression(expression); ??
          18. ???????? assertEquals("book1", Ognl.getValue(parseExpression, context)); ??
          19. ???????? ??
          20. ???????? book.setName("book2"); ??
          21. ???????? assertEquals("book2", Ognl.getValue(parseExpression, context)); ??
          22. ???? } ??
          23. ???? ??
          24. ????public void testSetValue() throws Exception { ??
          25. ???????? OgnlContext context = new OgnlContext(); ??
          26. ???????? Book book = new Book("book1"); ??
          27. ???????? context.put("book", book); ??
          28. ??
          29. ????????final String expression = "book.name"; ??
          30. ???????? Object parseExpression = Ognl.parseExpression(expression); ??
          31. ???????? Ognl.setValue(parseExpression, context, "book2"); ??
          32. ???????? assertEquals("book2", book.getName()); ??
          33. ???? } ??
          34. ???? ??
          35. ????public void testCallStaticMethod() throws Exception { ??
          36. ???????? OgnlContext context = new OgnlContext(); ??
          37. ??
          38. ????????final String expression = "@com.test.ognl.Book@test()"; ??
          39. ???????? Object parseExpression = Ognl.parseExpression(expression); ??
          40. ???????? assertEquals("Hello World", Ognl.getValue(parseExpression, context)); ??
          41. ???? } ??
          42. ???? ??
          43. ????public void testArray() throws Exception { ??
          44. ???????? OgnlContext context = new OgnlContext(); ??
          45. ??
          46. ????????final String expression = "new int[]{1, 2, 3}"; ??
          47. ???????? Object parseExpression = Ognl.parseExpression(expression); ??
          48. ????????int[] ret = (int[]) Ognl.getValue(parseExpression, context); ??
          49. ??
          50. ???????? assertEquals(1, ret[0]); ??
          51. ???????? assertEquals(2, ret[1]); ??
          52. ???????? assertEquals(3, ret[2]); ??
          53. ???? } ??
          54. ??
          55. ????public void testList() throws Exception { ??
          56. ???????? OgnlContext context = new OgnlContext(); ??
          57. ??
          58. ????????final String expression = "{1, 2, 3}"; ??
          59. ???????? Object parseExpression = Ognl.parseExpression(expression); ??
          60. ???????? List ret = (List) Ognl.getValue(parseExpression, context); ??
          61. ??
          62. ???????? assertEquals(new Integer(1), ret.get(0)); ??
          63. ???????? assertEquals(new Integer(2), ret.get(1)); ??
          64. ???????? assertEquals(new Integer(3), ret.get(2)); ??
          65. ???? } ??
          66. ???? ??
          67. ????public void testMap() throws Exception { ??
          68. ???????? OgnlContext context = new OgnlContext(); ??
          69. ??
          70. ????????final String expression = "#{\"name\" : \"book1\", \"price\" : 10.2}"; ??
          71. ???????? Object parseExpression = Ognl.parseExpression(expression); ??
          72. ???????? Map value = (Map) Ognl.getValue(parseExpression, context); ??
          73. ???????? assertEquals("book1", value.get("name")); ??
          74. ???????? assertEquals(new Integer(10.2), value.get("price")); ??
          75. ???? } ??
          76. } ??
          77. ??
          78. class Book { ??
          79. ????private int name; ??
          80. ??
          81. ????public Book(String bookName) { ??
          82. ????????this.name = bookName; ??
          83. ???? } ??
          84. ????public int getName() { ??
          85. ????????return name; ??
          86. ???? } ??
          87. ??
          88. ????public void setName(int Name) { ??
          89. ????????this.name = name; ??
          90. ???? } ??
          91. ??
          92. ????// test static method ??
          93. ????public static String hello() { ??
          94. ????????return "Hello World"; ??
          95. ???? }??

          posted on 2009-08-12 18:19 jadmin 閱讀(110) 評論(0)  編輯  收藏

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 林口县| 务川| 汉川市| 青海省| 桐柏县| 香河县| 紫云| 福建省| 沽源县| 井冈山市| 嫩江县| 枝江市| 扶沟县| 舟曲县| 景宁| 若尔盖县| 盐亭县| 广昌县| 蓬莱市| 塘沽区| 陇南市| 合川市| 陆川县| 铜梁县| 湘乡市| 三河市| 日土县| 醴陵市| 板桥市| 沂南县| 合阳县| 孝昌县| 兴海县| 双鸭山市| 个旧市| 西藏| 桦甸市| 虹口区| 鄱阳县| 武夷山市| 开远市|