快速入门
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);