首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JSP 中 EL 表達式原樣輸出不解析?常見原因與修正

     編輯:程式設計綜合問答

在 JSP 頁面中使用 EL 表達式(${...})卻發現瀏覽器直接顯示原始文字(如 ${user.name}),而非渲染後的值。這通常由以下幾個原因導致,本文提供完整排查清單。

現象示意

EL 表達式未解析
圖示:EL 表達式以純文字形式出現在頁面上

核心原因與解決方案

1. web.xml Servlet 版本過低(最常見)

EL 表達式需 Servlet 2.4 / JSP 2.0 以上支援。若 web.xml 宣告為 2.3,容器預設關閉 EL。

<!-- 錯誤:Servlet 2.3 不支援 EL -->
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" ...>

<!-- 正確:Servlet 3.0+ -->
<web-app xmlns="https://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee
         https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

2. JSP 頁面指令關閉 EL

頁面頂端若有 <%@ page isELIgnored="true" %>,會強制忽略 EL。移除或設為 false。

3. 字元編碼或引號問題

確認 JSP 檔案儲存編碼為 UTF-8,且 EL 表達式使用正確的大括號 ${...},非全形字元。

4. JSTL 標籤庫未正確引入

使用 <c:forEach> 等標籤時,需在頁面引入:

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>

且專案需包含 jstl-1.2.jar(或更新版本)。

5. 容器版本不支援

極舊版 Tomcat(< 5.0)或非標準容器可能不支援 EL。升級至 Tomcat 8.5+ / 9.0+。

實戰修正範例

提問者回饋解決方式:「在 c:foreach 裡面加表格標簽,只是在 value 裡面寫 value="${item.(strList裡面封裝的String名)}" 就可以了」。這說明問題在於 EL 變數路徑寫法錯誤,而非容器配置。正確存取 List 中 String 元素:

<c:forEach var="item" items="${strList}">
  <tr>
    <td>${item}</td> <!-- 直接輸出 String 元素 -->
  </tr>
</c:forEach>

快速檢查清單

  1. web.xml 版本 ≥ 2.4
  2. 無 isELIgnored="true"
  3. JSTL jar 存在於 WEB-INF/lib
  4. EL 語法正確:${bean.property} 或 ${map.key} 或 ${list[index]}
  5. 伺服器重啟後生效

逐項排查,多數情況下即可恢復 EL 正常解析。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved