You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring 3迁移至Spring 6:ExpressionEvaluationUtils替换方案咨询

替换Spring 3到Spring 6中ExpressionEvaluationUtils.evaluate的方案

原来的代码依赖Spring内部过时的ExpressionEvaluationUtils类,该类在Spring 6中已被移除,同时旧的JSP EL API也已废弃,推荐使用Jakarta EE标准EL API(对应Spring 6依赖的Jakarta EE 9+)来替代,以下是具体实现:

替代代码

import jakarta.el.ExpressionFactory;
import jakarta.el.ValueExpression;
import jakarta.servlet.jsp.PageContext;

// 替换原有的str = ExpressionEvaluationUtils.evaluate(...)代码
ExpressionFactory expressionFactory = ExpressionFactory.newInstance();
jakarta.el.ELContext elContext = pageContext.getELContext();
// 创建值表达式,指定表达式字符串和返回类型为Object
ValueExpression valueExpr = expressionFactory.createValueExpression(elContext, str, Object.class);
// 执行表达式求值
Object evalResult = valueExpr.getValue(elContext);
// 处理空值,转为字符串
str = evalResult != null ? evalResult.toString() : "";

说明

  1. API选择原因:Jakarta EL API是JSP 2.1及以后的标准EL处理方式,完全替代了过时的javax.servlet.jsp.el.ExpressionEvaluator,同时Spring 6基于Jakarta EE 9+,天然支持这套API,无需额外依赖。
  2. 功能等价性:这段代码和原ExpressionEvaluationUtils.evaluate的功能完全一致——解析传入的EL表达式字符串,在当前JSP页面上下文(PageContext)中求值,最终转为字符串。
  3. 兼容性:如果传入的str是普通字符串(非EL表达式),代码会直接返回原字符串,和原逻辑保持一致。

内容的提问来源于stack exchange,提问作者Thom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 09:47:07