<dependencies>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.1-b09</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b09</version>
<scope>runtime</scope>
</dependency>
</dependencies>
<web-app>
...
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
</init-param>
<init-param>
<param-name>compilerSourceVM</param-name>
</init-param>
<init-param>
<param-name>compilerTargetVM</param-name>
</init-param>
<init-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
</init-param>
<init-param>
<param-name>javax.el.expressionFactory</param-name>
<param-value>org.apache.el.ExpressionFactoryImpl</param-value>
</init-param>
</servlet>
...
</web-app>
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import javax.el.ELContext;
import javax.servlet.jsp.el.ELProcessor;
import java.util.HashMap;
import java.util.Map;
public class ExpressionEvaluator {
private static Map<String, ValueExpression> expressionCache = new HashMap<>();
private static ExpressionFactory expressionFactory = ExpressionFactory.newInstance();
public static Object evaluate(String expression, ELContext context) {
if (expressionCache.containsKey(expression)) {
return expressionCache.get(expression).getValue(context);
} else {
ValueExpression valueExpression = expressionFactory.createValueExpression(context, expression, Object.class);
expressionCache.put(expression, valueExpression);
return valueExpression.getValue(context);
}
}
}
import javax.el.ELException;
import javax.el.ELProcessor;
public class ExpressionEvaluator {
public static Object evaluate(String expression) {
try {
ELProcessor elProcessor = new ELProcessor();
return elProcessor.eval(expression);
} catch (ELException e) {
e.printStackTrace();
return null;
}
}
}