下面以一個簡單的示例來幫助讀者理解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; //屬性的getter和setter方法 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; //屬性的getter和setter方法 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嵌套屬性示意圖 |
運行該示例,控制器顯示如下信息:
★說明★
OGNL可以使用非常簡單的表達式來訪問多層嵌套屬性,為開發者提供了一個有力的工具。
posted on 2009-08-13 14:25
jadmin 閱讀(135)
評論(0) 編輯 收藏