首選,熟悉Ognl類的用法
1.定義兩個JavaBean,User和Departments
package com.struts2.bean;
public class User {
private String username;
private int age;
private Department depart=new Department();
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Department getDepart() {
return depart;
}
public void setDepart(Department depart) {
this.depart = depart;
}
}
package com.struts2.bean;
public class Department {
private int departCode;
private String departname;
public int getDepartCode() {
return departCode;
}
public void setDepartCode(int departCode) {
this.departCode = departCode;
}
public String getDepartname() {
return departname;
}
public void setDepartname(String departname) {
this.departname = departname;
}
}
2.用Ognl類訪問,賦值(需要ognl-2.6.11.jar)
package com.test.main;
import java.util.HashMap;
import java.util.Map;
import ognl.Ognl;
import ognl.OgnlException;
import com.struts2.bean.*;
public class TestMain {
/**
* @param args
* @throws OgnlException
*/
public static void main(String[] args) throws OgnlException {
// TODO Auto-generated method stub
TestMain test=new TestMain();
test.getValueByOgnl();
test.setValueByOgnl();
}
private void getValueByOgnl() throws OgnlException
{
User user=new User();
user.setUsername("張三");
user.setAge(25);
Map<String,String> map=new HashMap<String,String>();
map.put("name", "李四");
//當指定根對象時,不能加#,否則獲取爲null
System.out.println("姓名:"+Ognl.getValue(Ognl.parseExpression("username"), user)+
" 年齡:"+Ognl.getValue(Ognl.parseExpression("Age"), user));
//當指定上下文,並且表達式屬性不在根對象中時,必須指定#,否則產生NoSuchPropertyException異常
System.out.println("Map's name:"+Ognl.getValue(Ognl.parseExpression("#name"), map,user));
}
private void setValueByOgnl() throws OgnlException
{
User user=new User();
user.setUsername("張三");
user.setAge(25);
Ognl.setValue("depart.departname", user, "生產部");
//當指定根對象後,
System.out.println("姓名:"+Ognl.getValue(Ognl.parseExpression("username"), user)+
" 年齡:"+Ognl.getValue(Ognl.parseExpression("Age"), user)+
" 部門:"+Ognl.getValue(Ognl.parseExpression("depart.departname"), user));
}
}