inkfish翻译,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish )。本文是我学习JUEL同时,对原网站进行的简单的翻译,原网站地址:http://juel.sourceforge.net/guide/start.html 。
快速入门
JUEL 发行版包含下面一些jar文件:(来源:http://blog.csdn.net/inkfish)
1.juel-api-2.2.x.jar
——包含javax.el
包下的一些类
2.juel-impl-2.2.x.jar
——包含de.odysseus.el
实现类
3.juel-spi-2.2.x.jar
——包含META-INF/service/javax.el.ExpressionFactory
服务提供资源的定义(如果你的classpath里有多个EL的实现,而你又希望使用JUEL的实现,那么需要调用ExpressionFactory.newInstance()
)
4.juel-2.2.x.jar
——包含java.el
包下的类,并且包含de.odysseus.el
下的实现类,而且还有服务提供接口(spi)
也就是说:juel-2.2.x.jar = juel-api-2.2.x.jar + juel-impl-2.2.x.jar + juel-spi-2.2.x.jar
。(来源:http://blog.csdn.net/inkfish)
下面是所有你在你的应用中使用EL所需要的(假设你已经把juel-2.2.x.jar
放到classpath下,并且导入了javax.el.*
):(来源:http://blog.csdn.net/inkfish)
1.工厂和上下文(来源:http://blog.csdn.net/inkfish)
//ExpressionFactory类的实现是de.odysseus.el.ExpressionFactoryImpl ExpressionFactory factory = new de.odysseus.el.ExpressionFactoryImpl(); //de.odysseus.el.util provides包提供即时可用的子类ELContext de.odysseus.el.util.SimpleContext context = new de.odysseus.el.util.SimpleContext();
2. 函数和变量(来源:http://blog.csdn.net/inkfish)
//设置map函数math:max(int, int)使用java.lang.Math.max(int, int) context.setFunction("math", "max", Math.class.getMethod("max", int.class, int.class)); //map变量foo设置为0 context.setVariable("foo", factory.createValueExpression(0, int.class));
3. 解析和求值(来源:http://blog.csdn.net/inkfish)
//解析表达式 ValueExpression e = factory.createValueExpression(context, "${math:max(foo,bar)}", int.class); //设置顶级的属性"bar"值为1 factory.createValueExpression(context, "${bar}", int.class).setValue(context, 1);