【发布时间】:2021-09-15 10:04:25
【问题描述】:
我是 J2EE 新手。我创建了动态 web 项目并创建了 JSP 文件以使用 JSTL XML 标记来解析简单的 xml 并使用 forEach 循环读取节点。我正在使用 Tomcat 9 版本。 我已将 JSTL-1.2 复制到 WEB-INF/LIB 文件夹中,并且在我的 JSP 代码中识别出 JSTL Core/Function/XML 标签,但是当我为 JSTL XML forEach 功能编写代码时,我开始出现错误。
我添加了 Tomcat 9 中的 servlet-api.jar、jsp-api.jar 作为构建路径的一部分。
JSP 代码:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>XML Parse and forEach</title>
</head>
<body>
<c:import url="/Users.xml" var="XMLFile"/>
<x:parse xml="${XMLFile }" var="XMLdoc"/>
<x:forEach var="usr" select="$XMLdoc/users/user">
<x:out select="name"/>
<x:out select="gender"/>
<x:out select="age"/>
</x:forEach>
</body>
</html>
HTTP Status 500 – Internal Server Error
Type Exception Report
Message An exception occurred processing [XMLForEach.jsp] at line [17]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [XMLForEach.jsp] at line [17]
14: <c:import url="/Users.xml" var="XMLFile"/>
15: <x:parse xml="${XMLFile }" var="XMLdoc"/>
16:
17: <x:forEach var="usr" select="$XMLdoc/users/user">
18: <x:out select="name"/>
19: <x:out select="gender"/>
20: <x:out select="age"/>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:610)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499)
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)
Root Cause
java.lang.IllegalArgumentException: UnSupported Return Type : {http://www.w3.org/1999/XSL/Transform}OBJECT
java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImplUtil.isSupported(XPathImplUtil.java:248)
java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:127)
org.apache.taglibs.standard.tag.common.xml.XPathUtil.selectNodes(XPathUtil.java:258)
org.apache.taglibs.standard.tag.common.xml.ForEachTag.prepare(ForEachTag.java:59)
javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256)
org.apache.jsp.XMLForEach_jsp._jspx_meth_x_005fforEach_005f0(XMLForEach_jsp.java:261)
org.apache.jsp.XMLForEach_jsp._jspService(XMLForEach_jsp.java:159)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
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)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.48
---------------------------------------------------------------------------------------------
Jul 04, 2021 2:02:26 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [/S08LAL_-_JSTLXMLTags] threw exception [An exception occurred processing [XMLForEach.jsp] at line [17]
14: <c:import url="/Users.xml" var="XMLFile"/>
15: <x:parse xml="${XMLFile }" var="XMLdoc"/>
16:
17: <x:forEach var="usr" select="$XMLdoc/users/user">
18: <x:out select="name"/>
19: <x:out select="gender"/>
20: <x:out select="age"/>
Stacktrace:] with root cause
java.lang.IllegalArgumentException: UnSupported Return Type : {http://www.w3.org/1999/XSL/Transform}OBJECT
at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImplUtil.isSupported(XPathImplUtil.java:248)
at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:127)
at org.apache.taglibs.standard.tag.common.xml.XPathUtil.selectNodes(XPathUtil.java:258)
at org.apache.taglibs.standard.tag.common.xml.ForEachTag.prepare(ForEachTag.java:59)
at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256)
at org.apache.jsp.XMLForEach_jsp._jspx_meth_x_005fforEach_005f0(XMLForEach_jsp.java:261)
at org.apache.jsp.XMLForEach_jsp._jspService(XMLForEach_jsp.java:159)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:831)
[Build path][1]
[1]: https://i.stack.imgur.com/vCSzu.png
【问题讨论】:
-
我强烈怀疑您正在 Java 16 上运行 tomcat 9?它是否正确?如果您尝试在 Java 15 上运行 Tomcat 9,该错误仍然会发生吗?