问题描述:
在 JSP 页面中使用 JSTL 标签库,访问 JSP 页面时抛出了如下异常信息:
HTTP Status 500 - /WEB-INF/jsps/studentList.jsp (line: 20, column: 5) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
type Exception report
message /WEB-INF/jsps/studentList.jsp (line: 20, column: 5) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: /WEB-INF/jsps/studentList.jsp (line: 20, column: 5) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:149)
org.apache.jasper.compiler.Validator
V
a
l
i
d
a
t
e
V
i
s
i
t
o
r
.
c
h
e
c
k
X
m
l
A
t
t
r
i
b
u
t
e
s
(
V
a
l
i
d
a
t
o
r
.
j
a
v
a
:
1241
)
o
r
g
.
a
p
a
c
h
e
.
j
a
s
p
e
r
.
c
o
m
p
i
l
e
r
.
V
a
l
i
d
a
t
o
r
ValidateVisitor.checkXmlAttributes(Validator.java:1241) org.apache.jasper.compiler.Validator
ValidateVisitor.checkXmlAttributes(Validator.java:1241)org.apache.jasper.compiler.ValidatorValidateVisitor.visit(Validator.java:876)
org.apache.jasper.compiler.Node
C
u
s
t
o
m
T
a
g
.
a
c
c
e
p
t
(
N
o
d
e
.
j
a
v
a
:
1553
)
o
r
g
.
a
p
a
c
h
e
.
j
a
s
p
e
r
.
c
o
m
p
i
l
e
r
.
N
o
d
e
CustomTag.accept(Node.java:1553) org.apache.jasper.compiler.Node
CustomTag.accept(Node.java:1553)org.apache.jasper.compiler.NodeNodes.visit(Node.java:2392)
org.apache.jasper.compiler.Node
V
i
s
i
t
o
r
.
v
i
s
i
t
B
o
d
y
(
N
o
d
e
.
j
a
v
a
:
2444
)
o
r
g
.
a
p
a
c
h
e
.
j
a
s
p
e
r
.
c
o
m
p
i
l
e
r
.
N
o
d
e
Visitor.visitBody(Node.java:2444) org.apache.jasper.compiler.Node
Visitor.visitBody(Node.java:2444)org.apache.jasper.compiler.NodeVisitor.visit(Node.java:2450)
org.apache.jasper.compiler.Node
R
o
o
t
.
a
c
c
e
p
t
(
N
o
d
e
.
j
a
v
a
:
474
)
o
r
g
.
a
p
a
c
h
e
.
j
a
s
p
e
r
.
c
o
m
p
i
l
e
r
.
N
o
d
e
Root.accept(Node.java:474) org.apache.jasper.compiler.Node
Root.accept(Node.java:474)org.apache.jasper.compiler.NodeNodes.visit(Node.java:2392)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1845)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:218)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:374)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:660)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1157)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:927)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.84 logs.
解决方案:
方案1. 修改web.xml
将 web.xml 中的 声明由 2.4 或 2.5 版本的修改为 2.3 版本,如:
修改为:
方案2. 使用JSTL core RT库(推荐使用方案二)
JSTL 标签库的有两种 taglib 伪指令, 其中 RT 库即是依赖于 JSP 传统的请求时属性值, 而不是依赖于 EL 来实现:
只要将
<%@ taglib uri=“http://java.sun.com/jstl/core” prefix=“c”%>
改为
<%@ taglib uri=http://java.sun.com/jstl/core_rt prefix=“c”%>