Spring弃用的ExpressionEvaluationUtils评估方法的替代方法?

问题描述

您可以使用以下任何项目:

解决方法

自从 Spring
3.x发行版以来,不推荐使用org.springframework.web.util.ExpressionEvaluationUtils类,因此我正在Java代码中寻找EL表达式评估的另一种方法。

阅读JSP 2.x文档后,我确实设法构造了一种替代方法:

import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import javax.servlet.jsp.JspApplicationContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;


public class ExpressionEvaluationUtils {


    public static Object evaluate(String exp,Class<?> resultClass,PageContext pageContext)
        throws JspException {

        if (pageContext == null){
            return exp;
        }
        ELContext elContext =  pageContext.getELContext();
        JspFactory jf = JspFactory.getDefaultFactory();
        JspApplicationContext jac = jf
                         .getJspApplicationContext(pageContext.getServletContext());
        ExpressionFactory ef = jac.getExpressionFactory();
        ValueExpression val = ef.createValueExpression(elContext,exp,resultClass);
        return val.getValue(elContext);
    }

}

您能为我的实施方案提出更多替代方案吗?