表达式语言 (EL) 在 JSP 中的 if 条件中显示错误

the Expression Language (EL) showing error in if condition in JSP

我正在将数据从 login.java 发送到 stu.jsp

下面是login.java代码

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
       {
           boolean message = true;
           request.setAttribute("message", message); // This will be available as ${message}
           request.getRequestDispatcher("stu.jsp").forward(request, response);
       }

[这是 stu.jsp 代码(显示错误)] 请点击图片查看错误代码

click to view image

下面的代码和上面的图片一样 在 EL

的 if 条件中显示错误
<% if ( ${message} ) { %>
         <p> Today is weekend</p>
      <% } else { %>
         <p> Today is not weekend</p>
      <% } %>

下面是我运行服务器

时的完整错误信息
HTTP Status 500 – Internal Server Error


Type Exception Report

Message Unable to compile class for JSP: 

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [89] in the jsp file: [/stu.jsp]
Syntax error, insert ") Statement" to complete IfStatement
86:         
87:           
88:  
89:       <% if ( ${message} ) { %>
90:          <p> Today is weekend</p>
91:       <% } else { %>
92:          <p> Today is not weekend</p>


An error occurred at line: [89] in the jsp file: [/stu.jsp]
$ cannot be resolved to a variable
86:         
87:           
88:  
89:       <% if ( ${message} ) { %>
90:          <p> Today is weekend</p>
91:       <% } else { %>
92:          <p> Today is not weekend</p>


An error occurred at line: [89] in the jsp file: [/stu.jsp]
Syntax error on tokens, delete these tokens
86:         
87:           
88:  
89:       <% if ( ${message} ) { %>
90:          <p> Today is weekend</p>
91:       <% } else { %>
92:          <p> Today is not weekend</p>


An error occurred at line: [91] in the jsp file: [/stu.jsp]
Syntax error on token "else", delete this token
88:  
89:       <% if ( ${message} ) { %>
90:          <p> Today is weekend</p>
91:       <% } else { %>
92:          <p> Today is not weekend</p>
93:       <% } %>
94:     


An error occurred at line: [647] in the generated java file: [D:\Browser Downloads\setup -2\eclipse\TOMCAT\apache-tomcat-9.0.54\work\Catalina\localhost\PPP\org\apache\jsp\stu_jsp.java]
Syntax error, insert "}" to complete Block

Stacktrace:
    org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102)
    org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213)
    org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:487)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:397)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:367)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:351)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    pack.login.doPost(login.java:28)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


Note The full stack trace of the root cause is available in the server logs.

请帮我解决这个问题 提前谢谢你

message 是 JSP 中的一个属性,<%... %> 中的所有内容都是 java 代码。

在 Java 代码中,您不能使用 ${},因为您只能使用 Java 语法。

知道了这一点,你有两种可能:

<% %>:

中使用 request.getAttribute() 访问 message
<% if ((Boolean)request.getAttribute("message")) { %>
         <p> Today is weekend</p>
      <% } else { %>
         <p> Today is not weekend</p>
      <% } %> 

或者您可以使用 c:if:

<c:if test="${message}">
    <p> Today is weekend</p> 
</c:if>
<c:if test="${! message}">
    <p> Today is not weekend</p> 
</c:if>