struts2框架中使用的表达式并不是EL表达式,不是不能用,而是struts2有自己的一套御用的表达式,名字就叫OGNL表达式,本章节就此表达式进行深入的学习,主要是针对OGNL表达式基础语法的Demo联系~
OGNL表达式基础语法Demo
1、OGNL表达式基础语法Demo
在做Demo演示时需要有一个对象,创建一个名为User的对象,其代码如下:
User.Java代码:
package com.java.bean;
// User
public class User {
private String name;
private Integer age;
public User() {
super();
}
public User(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
1.1、Demo1:读取Root中的数据
其代码如下,大部分都是之前提到的代码准备工作,只有最后的getValue才是表达式的语法设置重点;
Demo1.class代码:
@Test
// 取root中的值 --- 既是:root_user中的值
public void Demo1() throws OgnlException {
// 准备ONGL的上下文
// 1、准备Root --- 将一个User对象放入到Root栈中
User root_user = new User("张三", 18);
// 2、准备context --- 将User对象以键值对的形式存入Context栈中
Map<String, User> context = new HashMap<String, User>();
context.put("User1", new User("jeck", 18));
context.put("User2", new User("rose", 22));
OgnlContext og = new OgnlContext();
og.setRoot(root_user);
og.setValues(context);
// 书写ONGL表达式,此表达式目的---取出root_user中的name、age的值
String name = (String) Ognl.getValue("name", og, og.getRoot());
Integer age = (Integer) Ognl.getValue("age", og, og.getRoot());
System.out.println(name + "," + age);
}
其代码junit后运行结果在控制台上显示如下: