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();
        }
    }
  • 相关阅读:
    Laravel报500错误
    本地部署laravel项目遇到500错误 软链接
    Class 'Maatwebsite\Excel\ExcelServiceProvider' not found
    laravel5.8报500服务器错误
    phpstudy安装redis
    如何在FastAdmin中使用Ajax发送请求?
    关于mysql处理百万级以上的数据时如何提高其查询速度的方法
    判断一个数组里面的所有键所对应的值是否是为int型
    将json字符串中含有非int型的数字字符全部改为int型
    php判断json是否是一个标准的json字符串
  • 原文地址:https://www.cnblogs.com/lyjs/p/5094887.html
Copyright © 2011-2022 走看看