Spring的ExpressionEvaluationUtils evaluate方法已被弃用,有哪些替代方法?

5

自从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);
    }

}

你能提供更多关于我的实现的替代方案吗?

你读过javadoc了吗?从Spring 3.2开始,JSP 2.0+原生支持在JSP页面中嵌入表达式(也适用于标签属性),因此不再需要使用该文档。 - lance-java
我已经做了,本地支持完美运行。但有时我会直接评估表达式。 - Maxim Kirilov
那么,你可以使用ExpressionFactory吗? - lance-java
我在上面的代码中使用它。我对其他解决方案很感兴趣。 - Maxim Kirilov
@MaximKirilov 谢谢您分享这个方法。您如何使用这个类?我应该在哪里插入它并调用它?谢谢。 - DarkCoffee
@maxim-kirilov 你会如何处理方法的原始参数?原始类有String paramName,String paramValue。请问我该如何从这些参数中获取String exp? - zdary
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接