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

JSP的scriptlet中if条件使用EL表达式编译报错怎么解决?

问题根因
  • EL表达式${message}属于JSP表达式语言语法,仅可在模板文本、JSP标签属性中直接解析,不能嵌套进<% %>包裹的Java脚本段中使用。你当前的写法是把EL放到了Java代码块的if判断条件里,Java编译器无法识别$开头的语法,所以直接抛出编译异常。
修复方案

提供两种可选修复方式:

方案1:沿用脚本段写法,不使用EL

直接在Java脚本段中从request域获取属性做判断,代码如下:

<%
// 从request域取出布尔类型的message属性
boolean message = (boolean) request.getAttribute("message");
if (message) {
%>
<p> Today is weekend</p>
<% } else { %>
<p> Today is not weekend</p>
<% } %>

方案2:使用EL+JSTL标签实现(推荐,符合JSP最佳实践,避免脚本段混用)

首先在JSP页面顶部引入JSTL核心标签库声明:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
替换原有判断代码块为如下内容:

<c:choose>
    <c:when test="${message}">
        <p> Today is weekend</p>
    </c:when>
    <c:otherwise>
        <p> Today is not weekend</p>
    </c:otherwise>
</c:choose>

该方案完全避免了Java脚本段的使用,语法更简洁,也不会出现语法混用的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:03