Да, это возможно, вы можете обратиться к этой ссылке для получения дополнительной информации. Как видите, чтобы использовать автономное выражение EL, вам нужно реализовать несколько классов, таких как javax.el.ELContext
. Я обнаружил, что JUEL , являющаяся одной из реализаций выражения EL, уже предоставляет очень хорошие реализации этих классов в пакете de.odysseus.el.util
.
Я играл с JUEL. Вот мой тестовый код для вашей справки:
/*
ExpressionFactoryImpl should be the implementation of ExpressionFactory used by your application server.
For example , in tomcat 7.0 , it is org.apache.el.ExpressionFactoryImpl , which is inside the jasper-el.jar .
jasper-el.jar is the implemenation of EL expression provided by tomcat , el-api.jar is the API of EL expression (i.e. JSR-245)
*/
ExpressionFactory factory = new ExpressionFactoryImpl();
/*
SimpleContext is the utility classes from fuel
*/
SimpleContext context = new SimpleContext();
//Set the variables in the context
Map<String,Object> hashMap = new HashMap<String,Object>();
hashMap.put("c", "xyz");
context.setVariable("a", factory.createValueExpression("abc", String.class));
context.setVariable("b", factory.createValueExpression(hashMap, HashMap.class));
//Create the EL expression
ValueExpression expr = factory.createValueExpression(context, "A is ${a} and C is ${b.c}", String.class);
System.out.println(expr.getValue(context));