我需要使用OGNL从Java对象中读取一些属性。OGNL对我来说是一个全新的事物。OGNL的网站上提供的OGNL文档让我很困惑。
所以任何人都可以提供一个简单的HelloWorld
示例来使用OGNL (或者任何教程的链接也是很有帮助的)。
发布于 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);
发布于 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
发布于 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表达式。
https://stackoverflow.com/questions/785887
复制相似问题