EL表达式与JSTL版本问题:org.apache.jasper.JasperException

本文探讨了在使用JSTL1.1版本时遇到的表达式问题,详细介绍了如何通过更改标签库指令来解决<c:out>标签无法正确解析表达式的错误。

今天给学生讲JSTL核心库里的<c:out>标签,做演示时无任何问题,但学生在练习时<c:out value="abc" default="123"/>可以正常显示,在使用<c:out value="${name}">使用EL表达式取request值时报下面的异常: ­

org.apache.jasper.JasperException: /jsp/pages/MyJsp.jsp(4,0) According to TLD or attribute directive in tag file, attribute end does not accept any expressions... ­

­

后经研究发现这是JSTL版本的问题 :­

jstl的1.0的版本有两个tld,以core为例,core.tld和core_rt.tld,后者支持表达式,jstl 1.1的core.tld就都支持了 ­

­

在使用JSTL1.1时发现上面错误. 必须将第一行换成: ­

<%@ taglib prefix="c" http://java.sun.com/jstl/core_rt" %> ­

才正确.­

HTTP状态 500 - 内部服务器错误 类型 异常告 消息 org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression [${encodeURIComponent(`${platform.toLowerCase()}_login_${timestamp}`)}] 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression [${encodeURIComponent(`${platform.toLowerCase()}_login_${timestamp}`)}] org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:425) 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) 根本原因。 org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression [${encodeURIComponent(`${platform.toLowerCase()}_login_${timestamp}`)}] org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1644) org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:771) org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:959) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2385) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2437) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2443) org.apache.jasper.compiler.Node$Root.accept(Node.java:471) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2385) org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1869) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:224) org.apache.jasper.compiler.Compiler.compile(Compiler.java:391) org.apache.jasper.compiler.Compiler.compile(Compiler.java:367) org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) org.apache.jasper.JspCompilationContext.compile(JspCompilationConte
03-21
HTTP状态 500 - 内部服务器错误 类型 异常告 消息 /JSTL/NewFile.jsp (行.: [11], 列: [4]) useBean类属性[JSTL.UserInfo]的值无效。 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: /JSTL/NewFile.jsp (行.: [11], 列: [4]) useBean类属性[JSTL.UserInfo]的值无效。 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:292) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:115) org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1369) org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1187) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2385) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2437) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2443) org.apache.jasper.compiler.Node$Root.accept(Node.java:471) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2385) org.apache.jasper.compiler.Generator.generate(Generator.java:3586) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:253) org.apache.jasper.compiler.Compiler.compile(Compiler.java:374) org.apache.jasper.compiler.Compiler.compile(Compiler.java:350) org.apache.jasper.compiler.Compiler.compile(Compiler.java:334) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331) javax.servlet.http.HttpServlet.service(HttpServlet.java:764) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 Apache Tomcat/8.5.73
05-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值