`
javaPrimary
  • 浏览: 60869 次
  • 性别: 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

    标题 "传文件,感谢UC dl4j-examples-master.zip" 提供的信息表明,这是一个与Java相关的文件,更具体地,是关于Deep Learning for Java (DL4J) 的示例代码库。DL4J是一个开源的Java库,允许开发人员在Java和Scala中...

    uc浏览器上网

    从压缩包的文件名称列表中,我们可以看到多个版本的UC浏览器,具体为V8.1.0.104,这代表了该软件的不同构建版本。"Build11122309" 可能是构建日期,即2011年12月23日的简写形式,而不同的后缀(-1至-9)可能表示不同...

    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下进行源码级调试 ...

    lpc ucosii arm7

    后者“lpcucosii”可能是一个包含源代码、工程文件或其他相关材料的目录或文件,与LPC系列微控制器上的uC/OS-II实现直接相关。 综上所述,这个压缩包提供了一个适合初学者的平台,用于学习如何在ARM7微控制器(如...

    基于stm32的uCGUI移植手册(版本V1.0)

    这个过程包括配置工程的编译选项,以及将uC/GUI的源文件和资源文件导入工程中。然后是修改源码以适应特定的硬件平台。这通常涉及到编写或修改显示驱动和输入设备驱动以符合特定液晶屏和按键等输入设备的要求。 在...

    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动态...

    算法设计与分析课后习题答案

    文档还提到了Chuck Sanders对第二章的大部分解答以及第十四章中许多解答的贡献,并感谢了UC Santa Cruz的研究生Luo Hong对解答的贡献。文档的末尾日期为2000年2月25日,表明这些解答是在那个时间点之前编写的。 ...

    公务员面试技巧宣贯.pdf

    如文件中提到的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创建整体课程表。 该软件使用各种学术资源,包括教授的评分,年级分布和步行距离,以创建关于上课时间表可能有多困难的全面预测。...

Global site tag (gtag.js) - Google Analytics