JSP 頁面出現 ${expr} 原樣輸出而非求值,通常是 web.xml Servlet 版本聲明過低或配置缺失導致。本文提供三種針對性修復方案。
isELIgnored="false")。web.xml 版本聲明為 2.3 或缺失 jsp-config,仍可能被關閉。<web-app version="2.4"
xmlns="https://java.sun.com/xml/ns/j2ee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee
https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
...
</web-app>
或 Servlet 2.5:
<web-app version="2.5"
xmlns="https://java.sun.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://java.sun.com/xml/ns/javaee
https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
修改後重啟應用,EL 即刻生效,無需修改任何 JSP。
<%@ page isELIgnored="false" %>
放在 JSP 頂部,僅對當前頁生效,適合老專案局部遷移。
在 web.xml 中添加 jsp-config:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
</jsp-property-group>
</jsp-config>
對所有 .jsp 生效,不改動 Servlet 版本聲明。
| web.xml 聲明 | Servlet 版本 | JSP 版本 | EL 預設 |
|---|---|---|---|
| DTD 2.2/2.3 | 2.3 | 1.2 | 忽略 (false) |
| XSD 2.4 | 2.4 | 2.0 | 啟用 (true) |
| XSD 2.5/3.0/3.1 | 2.5/3.0/3.1 | 2.1/2.2/2.3 | 啟用 (true) |
web.xml 根元素版本 ≥ 2.4。<jsp-config><el-ignored>true</el-ignored> 覆蓋。建議統一採用方案一(升級版本聲明),一勞永逸且符合現代規範。