zoukankan      html  css  js  c++  java
  • Ognl

    package cn.lyjs.ognl;
    
    import org.junit.Test;
    
    import ognl.Ognl;
    import ognl.OgnlContext;
    import ognl.OgnlException;
    
    public class OgnlDemo1 {
        /**
         * Ognl表达式语言取值,取非根元素必须使用#,
         * 如果取根元素的值,不需要带#号
         * @throws OgnlException
         */
        @Test
        public void testOgnl() throws OgnlException {
            //创建一个Ognl上下文对象
            OgnlContext context=new OgnlContext();
            //放入数据
            User user=new User();
            user.setId(20);
            user.setName("Tom");
            context.put("user", user);
            //获取数据
            //先构建一个Ognl表达式,在解析表达式
            Object ognl=Ognl.parseExpression("#user.id");
            Object value=Ognl.getValue(ognl, context, context.getRoot());
            
            System.out.println(value);
        }
        
        
        @Test
        public void testOgn2() throws OgnlException {
            //创建一个Ognl上下文对象
            OgnlContext context=new OgnlContext();
            //放入数据
            User user=new User();
            user.setId(20);
            user.setName("Tom");
            context.setRoot(user);
            //获取数据
            //先构建一个Ognl表达式,在解析表达式
            Object ognl=Ognl.parseExpression("id");
            Object value=Ognl.getValue(ognl, context, context.getRoot());
            
            System.out.println(value);
        }
        /**
         * Ognl对静态方法调用的支持
         * @throws OgnlException
         */
        
        @Test
        public void testOgnl3() throws OgnlException {
            //创建一个Ognl上下文对象
            OgnlContext context=new OgnlContext();
            //Ognl表达式语言,代用类的静态方法
            //Object ognl=Ognl.parseExpression("@Math@floor(10.9)");
            //由于Math类在开发中比较常用所以也可以这样写
            
            Object ognl=Ognl.parseExpression("@@floor(10.9)");
            Object value=Ognl.getValue(ognl, context, context.getRoot());
            System.out.println(value);
        }
    }
    package cn.lyjs.ognl;
    
    import static org.junit.Assert.*;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.apache.struts2.ServletActionContext;
    import org.junit.Test;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.util.ValueStack;
    
    public class OgnlDemo2 extends ActionSupport{
        @Override
        public String execute() throws Exception {
            gets();
            return SUCCESS;
        }
    
        private void gets() {
            //获取值栈对象
            HttpServletRequest request = ServletActionContext.getRequest();
            ValueStack vs2 = (ValueStack) request.getAttribute("struts.valueStack");
            //获取值栈对象
            ActionContext ac=ActionContext.getContext();
            ValueStack valueStack = ac.getValueStack();
        }
    }
  • 相关阅读:
    【BZOJ 3754】: Tree之最小方差树
    【cogs 775】山海经 ——Segment Tree
    【BZOJ 3626】 [LNOI2014]LCA【在线+主席树+树剖】
    【BZOJ 2004】: [Hnoi2010]Bus 公交线路
    开启22端口
    将MySQL数据库表结构,自动生成PDM方法
    linux环境 创建多版本php
    mysql 数据类型选择浅谈
    int(5) 到底是多长
    (记)小程序如何发布
  • 原文地址:https://www.cnblogs.com/lyjs/p/5094887.html
Copyright © 2011-2022 走看看