`
javaPrimary
  • 浏览: 59389 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

传文件,感谢UC

 
阅读更多
/**
 * 
 */
package com.ly.rule;

import java.util.HashMap;
import java.util.Map;

import org.apache.ibatis.ognl.Ognl;
import org.apache.ibatis.ognl.OgnlContext;
import org.apache.ibatis.ognl.OgnlException;

/**
 * @author ly
 *
 */
public class OgnlDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// test1();
		// test2();
		test0();
	}

	private static void test0() {
		OgnlContext context = new OgnlContext();
		Map<String, Object> obj = new HashMap<>();
		obj.put("name", "test");
		obj.put("user_age", new Integer(10));
		obj.put("order_amount", new Double(3000));
		context.setRoot(obj);
		String expression = "name == 'test' && user_age < 10 && order_amount > 3000";
		try {
			Boolean result = (Boolean) Ognl.getValue(expression, context, context.getRoot());
			System.out.println(result);
		} catch (OgnlException e) {
			e.printStackTrace();
		}
	}

	private static void test1() {
		Foo foo = new Foo();
		foo.setName("test");
		User user = new User();
		user.setAge(9);
		Order order = new Order();
		order.setAmount(3003.56);
		OgnlContext context = new OgnlContext();
		context.setRoot(foo);
		context.put("user", user);
		context.put("order", order);
		System.out.println(context.getValues());
		String expression = "name == 'test' && #user.age < 10 && #order.amount > 3000";
		try {
			Boolean result = (Boolean) Ognl.getValue(expression, context, context.getRoot());
			System.out.println(result);
		} catch (OgnlException e) {
			e.printStackTrace();
		}
	}

	private static void test2() {
		Foo foo = new Foo();
		foo.setName("test");
		User user = new User();
		user.setAge(19);
		Order order = new Order();
		order.setAmount(3003.56);
		OgnlContext context = new OgnlContext();
		context.setRoot(foo);
		context.put("user", user);
		context.put("order", order);
		System.out.println(context.getValues());
		String expression = "name == 'test' && #user.age < 10 && #order.amount > 3000";
		try {
			Boolean result = (Boolean) Ognl.getValue(expression, context, context.getRoot());
			System.out.println(result);
		} catch (OgnlException e) {
			e.printStackTrace();
		}
	}

}

class Order {
	private double amount;

	public double getAmount() {
		return amount;
	}

	public void setAmount(double amount) {
		this.amount = amount;
	}

	@Override
	public String toString() {
		return "Order [amount=" + amount + "]";
	}

}

class User {
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "User [age=" + age + "]";
	}
}

class Foo {
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Foo [name=" + name + "]";
	}

}

 

分享到:
评论

相关推荐

    传文件,感谢UC dl4j-examples-master.zip

    NULL 博文链接:https://javaprimary.iteye.com/blog/2429712

    uc-httpd-1.0.0-buffer-overflow-exploit:uc-httpd 1.0.0缓冲区溢出漏洞利用PoC

    uc-httpd-1.0.0-buffer-overflow-exploit [熊麦uc-httpd 1.0.0缓冲区溢出漏洞利用概念证明] 概念证明代码:0dayPoC.py CVE-2018-10088 感谢CVE分配团队为构建以下内容提供的帮助: [描述] 通过XiongMai uc-httpd ...

    uC/OS ii for nano2410

    目前(2011-12-21)还在持续改进中,如有问题请提出,感谢 编译: autoreconf --install CC=arm-linux-gcc ./configure --host=arm-linux make 建议使用2.95.3的arm-linux-gcc,以便能够在ADS下进行源码级调试 ...

    STCMS 音乐系统 v2.7.rar

    由于系统发布时间还不是很长,会员功能还不算强大,不过今后会有很大发展,将支持UC,以整合大多数主流论坛。 12、专门的歌手库。用户可以在后台直接编辑歌手信息,定制歌手信息,歌手简介支持html,也同过...

    uc-love-data-week.github.io

    我重新组织了所有文件,以确保您可以每年(或每月一次,取决于您组织路径的方式)轻松地重复使用同一模板,假设您的活动是每年一次。 非常感谢Agency的创建者,因为没有他们的辛勤工作,这个主题是不可能的! 随时...

    esp-link:esp8266 wifi串行桥,出站TCP和arduinoAVRLPCNXP编程器

    内置用于AVR uC的stk500v1编程器:使用HTTP上载十六进制文件的程序 从连接的微控制器到Internet的出站REST HTTP请求 从附加的微控制器到互联网的MQTT客户端发布/订阅 提供自定义网页,这些网页包含从附加的uC动态...

    BidCms企业版_V2.2.2_UTF8_SC(简体中文)

    尊敬的朋友你们好,感谢您选择BidCms开源竞拍系统,BidCms自发布以来已经经历了三个版本的更新,功能也越来越丰富,系统也更加稳定成熟。这也是更多的站长毫不犹豫选择BidCms的理由。我们至力于电子商务十余年的研究...

    matlabhill代码-Numerical-Analysis-Methods:企业会计软件,可管理多个程序及其信息

    在MATLAB文件中,代码是为2017年Spring在UC Merced上的数学131:数值方法课程编写的。特别感谢教授该课程的Vu Thai Luan教授和帮助启发作者完成写作的Shagun Rawat此代码。 当它可以使用以下方法执行曲线拟合和线性...

    BSR.jl:伯克利细分资源的Julia包装器

    BSR文件 BSR.jl库包装了UC Berkeley 页面中的代码,并将其公开以方便在Julia中使用。 这是一项正在进行的工作,因为仅公开了一部分功能(欢迎拉动请求!)。 当前包装了以下算法: 全局边界概率(gPb) gpb-owt-...

    berkulator:提交CalHacks 6.0

    助推器提交CalHacks 6.0目录描述Berkulator是一种学术网络工具,用于在UC Berkeley创建整体课程表。 该软件使用各种学术资源,包括教授的评分,年级分布和步行距离,以创建关于上课时间表可能有多困难的全面预测。...

    Discuz! 幻雪插件版

    然后发送给QQ/MSN/ICQ/YAHOO/UC好友 安装广告公司(注:其中使用了绝对地址,请修改adcom.php和对应的模版) 安装社区俱乐部 还有不少小HACK,已经记不清了~ 在此感谢这些插件的作者,因为他们的...

    zero-to-jupyterhub-k8s:在Kubernetes上部署JupyterHub的Helm图表和文档

    本文档的许多初始基础是从UC Berkeley的JupyterHub和Kubernetes在程序中的成功使用中学到的信息。 致谢 感谢以下贡献者: 亚伦·库里奇(Aaron Culich) 卡罗尔·威林 克里斯·霍尔德格拉夫 埃里克·桑德尔 瑞安·...

    CmsTop 内容管理系统大众版 v1.0.0.800 Final.rar

    2. 解决了模板文件名称中包含特殊字符导致的页面空白问题(推荐) 3. 修复了数据库工具不可用的问题(推荐) 4. 修改编辑器查看源码界面为本页查看 5. 修复了文章标题、短标题和描述多次过滤的问题 6. 清空回收站...

    AmorodLinux:专为维护而设计的发行版,基于Debian Sid。-开源

    专为维护而设计的发行版,... 特别感谢Nimord提供的墙纸:https://www.youtube.com/channel/UC3l664KcaFcbiLW9yOTnk8g !!! 注意力 !!! 如果自动登录不起作用:用户:amorod密码:123并且不要忘记阅读自述文件

    柯林net9.0最新破解版

    你好,首先感谢你下载李枫破解的柯林net9.0干净数据库程序。 数据库文件根目录的1.bak用星外的主机管理可以自助还原,如果使用的其他主机管理请联系空间商协助还原数据库。数据库连接路径在根目录Web.config文件里,...

    记事狗微博系统 4.7.4 Build 20140922 GBK.zip

    修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的微博时提示内容为空的BUG 修复某些网站会出现sid is invalid提示的问题 修复运行环境下模板编译出错提示信息暴露网站物理路径...

    记事狗微博系统 4.7.4 Build 20140922 UTF8.zip

    修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的微博时提示内容为空的BUG 修复某些网站会出现sid is invalid提示的问题 修复运行环境下模板编译出错提示信息暴露网站物理路径...

Global site tag (gtag.js) - Google Analytics