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 阅读(130) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问