当前位置: 首页 > 知识库问答 >
问题:

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

范轶
2023-03-14
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);
       }
<% 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.

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

共有1个答案

伊锦
2023-03-14

message是JSP中的一个属性,而<%...%>是java代码。

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

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

<% if ((Boolean)request.getAttribute("message")) { %>
         <p> Today is weekend</p>
      <% } else { %>
         <p> Today is not weekend</p>
      <% } %> 
<c:if test="${message}">
    <p> Today is weekend</p> 
</c:if>
<c:if test="${! message}">
    <p> Today is not weekend</p> 
</c:if>
 类似资料:
  • JSP表达式语言(EL)使得访问存储在JavaBean中的数据变得非常简单。JSP EL既可以用来创建算术表达式也可以用来创建逻辑表达式。在JSP EL表达式内可以使用整型数,浮点数,字符串,常量true、false,还有null。 一个简单的语法 典型的,当您需要在JSP标签中指定一个属性值时,只需要简单地使用字符串即可: <jsp:setProperty name="box" propert

  • 本文向大家介绍Scala语言保护(if表达式),包括了Scala语言保护(if表达式)的使用技巧和注意事项,需要的朋友参考一下 示例 案例语句可以与if表达式结合使用,以在模式匹配时提供额外的逻辑。 确保您的警卫人员不会产生非详尽的匹配非常重要(编译器通常不会捕获此匹配): 这将引发一个MatchError奇数。您必须考虑所有情况,或使用通配符匹配情况:            

  • 问题内容: 我有两个表,用于存储该员工的所有个人记录,并存储每个月支付给特定员工的电话费。现在我有一个名为的函数,类似于以下内容: 此功能基本上可以找到在给定期间内支付账单的所有员工。但是我遇到一个错误 型号:: 注意:如果我跳过和条件,我将得到array的结果! 问题答案: 详细信息/注释: 1)看起来您正在使用。不要那样做改用Containable 2)您不能根据条件限制父模型包含的数据/包含

  • 尤达表达式 不要使用尤达表达式。尤达表达式是指,拿一个常量去和变量比较而不是拿变量去和常量比较。它就像是在表达 “蓝色是不是天空的颜色” 或者 “高个是不是这个男人的属性” 而不是 “天空是不是蓝的” 或者 “这个男人是不是高个子的” (译者注:名字起源于星球大战中尤达大师的讲话方式,总是用倒装的语序) 推荐: if ([myValue isEqual:@42]) { ... 不推荐: if ([

  • 了解 After Effects 中的表达式和表达式引用,如时间转换方法和矢量数学方法。 使用 After Effects 表达式元素以及标准 JavaScript 元素来编写您的表达式。您可随时使用“表达式语言”菜单将方法和属性插入到表达式中,您还可以随时使用关联器来插入属性。 如果参数描述包含等号 (=) 和一个值(例如 t=time 或 width=.2),则当您未指定其他值时,该参数将使用

  • 本文向大家介绍Go语言正则表达式示例,包括了Go语言正则表达式示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言正则表达式。分享给大家供大家参考,具体如下: 返回结果: PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: http://tools.jb51.net/regex/javascript 正则表达式在线生成工