<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; } } }


上一篇:
下一篇:
切换中文