posts - 495,  comments - 11,  trackbacks - 0

          下面以一個簡單的示例來幫助讀者理解OGNL表達式。使用OGNL表達式,需要在www.ognl.org網站下載一個ognl.jar插件包,將該文件復制到classpath路徑下即可。建立一個復合類型,如代碼8.1所示。

          代碼8.1定義復合類型

          package ch8;
          import java.util.Date;
          //
          團隊類
          public class Team {
          //
          團隊名稱
          private String teamname;
          //
          定義團隊人員屬性
          private Person person;
          //
          團隊人數
          private int personnum;
          //
          屬性的gettersetter方法
          public String getTeamname() {
          return teamname;
          }
          public void setTeamname(String teamname) {
          this.teamname = teamname;
          }
          public Person getPerson() {
          return person;
          }
          public void setPerson(Person person) {
          this.person = person;
          }
          public int getPersonnum() {
          return personnum;
          }
          public void setPersonnum(int personnum) {
          this.personnum = personnum;
          }
          }
          //
          定義人員類
          class Person {
          //
          姓名
          private String name;
          //
          年齡
          private int age;
          //
          人員出生日期
          private Date birthday;
          //
          屬性的gettersetter方法
          public String getName() {
          return name;
          }
          public void setName(String name) {
          this.name = name;
          }
          public int getAge() {
          return age;
          }
          public void setAge(int age) {
          this.age = age;
          }
          public Date getBirthday() {
          return birthday;
          }
          public void setBirthday(Date birthday) {
          this.birthday = birthday;
          }
          }

          代碼8.1所示內容定義了兩個復合類型:團隊(team)和人員(person)類型。使用OGNL表達式示例,如代碼8.2所示。

          代碼8.2使用OGNL表達式示例

          package ch8;
          import java.util.HashMap;
          import java.util.Map;
          import ognl.Ognl;
          import ognl.OgnlException;
          public class TestOGNL {
          public static void main(String[] args) {
          //
          定義一個Map對象
          Map m = new HashMap();
          //
          定義一個Team對象
          Team team1 = new Team();
          team1.setTeamname("
          團隊1");
          //
          定義一個Person對象
          Person person1 = new Person();
          person1.setName("pla1");
          //
          添加team元素
          team1.setPerson(person1);
          //
          定義一個Team對象
          Team team2 = new Team();
          team2.setTeamname("
          團隊2");
          //
          定義一個Person對象
          Person person2 = new Person();
          person2.setName("pla2");
          //
          添加team元素
          team2.setPerson(person2);

          //
          添加Map元素
          m.put("team1", team1);
          m.put("team2", team2);
          try {
          System.out.println(Ognl.getValue("team1.teamname", m));
          System.out.println(Ognl.getValue("team2.person.name", m));
          System.out.println(Ognl.getValue("teamname", team2));
          System.out.println(Ognl.getValue("person.name", team2));
          } catch (OgnlException e) {
          }
          }
          }


          代碼8.2所示內容定義了一個Map類型的嵌套屬性,如圖8.1所示。

          ??

          8.1嵌套屬性示意圖

          運行該示例,控制器顯示如下信息:

          團隊1
          pla2
          團隊2
          pla2

          說明

          OGNL可以使用非常簡單的表達式來訪問多層嵌套屬性,為開發者提供了一個有力的工具。

          posted on 2009-08-13 14:25 jadmin 閱讀(138) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 舟山市| 罗平县| 深州市| 博客| 丰原市| 民勤县| 建德市| 吉隆县| 万荣县| 陆丰市| 遵义市| 五寨县| 化德县| 交城县| 柳林县| 康平县| 兴安盟| 台南市| 铁岭县| 成安县| 泾源县| 德江县| 蒙山县| 桑植县| 五常市| 新平| 道孚县| 鱼台县| 平阳县| 宽甸| 广东省| 奈曼旗| 云南省| 西平县| 孟村| 鹿泉市| 郓城县| 图木舒克市| 沿河| 常熟市| 吉林省|