首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中的OGNL Hello World

Java中的OGNL Hello World
EN

Stack Overflow用户
提问于 2009-04-24 13:39:06
回答 4查看 15.8K关注 0票数 18

我需要使用OGNL从Java对象中读取一些属性。OGNL对我来说是一个全新的事物。OGNL的网站上提供的OGNL文档让我很困惑。

所以任何人都可以提供一个简单的HelloWorld示例来使用OGNL (或者任何教程的链接也是很有帮助的)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-13 00:12:12

试试这个:

    Dimension d = new Dimension(2,2);

    String expressionString = "width";
    Object expr = Ognl.parseExpression(expressionString);

    OgnlContext ctx = new OgnlContext();
    Object value = Ognl.getValue(expr, ctx, d);

    System.out.println("Value: " + value);
票数 12
EN

Stack Overflow用户

发布于 2010-06-09 00:46:38

如果只想从对象中读取属性,那么PropertyUtils.getProperty (来自commons-beanutils)就足够了。然而,如果目的是评估条件句之类的,那么Ognl可能会受益。

下面是带有布尔值的相同的Dimension示例:

Dimension d = new Dimension();
d.setSize(100,200) ;// width and height

Map<String,Object> map = new HashMap<String,Object>();
map.put("dimension", d);

String expression = "dimension.width == 100 && dimension.height == 200";
Object exp = Ognl.parseExpression(expression);
Boolean b = (Boolean) Ognl.getValue(exp,map);
// b would evaluate to true in this case
票数 8
EN

Stack Overflow用户

发布于 2014-01-09 14:48:11

OGNL允许您通过字符串表达式访问对象、字段和方法,当您失去了数据与其使用者之间的耦合架构时,这将变得非常有用。它在幕后使用反射,但与纯反射方法相比,它确实加快了开发速度。

一些一行的例子

System.out.println(Ognl.getValue("x", new Point(5,5)));
System.out.println(Ognl.getValue("size", new ArrayList<Object>()));

Documentation已经有了许多基本的和更高级的ognl表达式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/785887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档