struts2_OGNL与值栈(ValueStack).docVIP

  • 1
  • 0
  • 约6.91千字
  • 约 16页
  • 2017-05-12 发布于河南
  • 举报
struts2_OGNL与值栈(ValueStack)

Struts2___OGNL与值栈(ValueStack) OGNL Object-Graph Navigation Language 一种功能强大的表达式语言, 通过表达式语法,可以存取对象的任意属性,调用对象的方法, 遍历整个对象的结构图,实现字段类型转化等功能 OgnlContext(Ognl上下文)来存放对象, OgnlContext是一个Map 访问根对象 不需要# 其他对象需要用 #指定keypublic static void main(String[] args) throws OgnlException { Employee employee = new Employee(); employee.setName(员工A); employee.setAddress(new Address(china,常德,后街)); Manager manager = new Manager(); manager.setName(经理A); // 创建OGNL上下文 OgnlContext是一个Map OgnlContext context = new OgnlContext(); // 将employee对象放到OGNL上下文中 context.put(employee, employee); // 将manager对象放到OGNL上下文中 context.put(manager, manager); // 将employee对象设置为OGNL上下文的根对象 context.setRoot(employee); // 表达式name,将执行employee.getName(), //因为employee对象是根对象 Object obj=Ognl.parseExpression(name); System.out.println(根对象的name属性是: + Ognl.getValue(obj, context,context.getRoot())); System.out.println(根对象的name属性是: + Ognl.getValue(name,context.getRoot())); System.out.println(根对象的address属性的city是: + Ognl.getValue(address.city,context.getRoot())); // 表达式#manager.name,将执行manager.getName(), // 如果你访问的不是OGNL上下文中的根对象,那么必须在前面加上一个名称空间,例如#manager obj=Ognl.parseExpression(#manager.name); System.out.println(manager对象的name属性是: + Ognl.getValue(obj, context,context.getRoot()));} OGNL对象结构Struts2使用OGNL OGNL表达式是Struts2默认的表达式语言 com.opensymphony.xwork2.ActionContext com.opensymphony.xwork2.util.ValueStack接口 com.opensymphony.xwork2.util.OgnlValueStack 实现类 Struts2收到请求后, 创建ActionContext,保存在ThreadLocal中, 将OGNL上下文设置为ActionContext,并将ValueStack(值栈)作为根对象 Action实例放到的顶ValueStack不需要#(也可以通过EL访问) 访问其他对象(request,session) 则需要加# OGNL表达式使用示例:(参见ch4) 访问简单属性: 标签访问:s:property value=simpleAttr / EL访问:${requestScope.simpleAttr}标签访问:s:property value=employee.name / EL访问:${requestScope.employee.name}标签访问:s:property value=persons[0].name/ EL访问:${requestSc

文档评论(0)

1亿VIP精品文档

相关文档