鱼C论坛

 找回密码
 立即注册
查看: 1428|回复: 8

[已解决]Tomcat10中添加JSTL库的一些问题:foreach一使用就报错

[复制链接]
发表于 2023-5-10 03:52:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html; charset=UTF-8" %>
<%--引用核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--格式化标签库--%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%--sql标签库--%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<%
    HashMap<String,String> hashMap = new HashMap<>();
    hashMap.put("userName","ly");
    hashMap.put("passWord","1234");
    request.setAttribute("hashMap",hashMap);
%>

<html>
    <head>
        <title>index</title>
    </head>
    <body>
        <c:out value="hello baby"></c:out>
        <c:forEach items="${hashMap}" var="s">
           ${s.key}
        </c:forEach>
    </body>
</html>
最佳答案
2023-5-10 07:29:56
在 Tomcat 10 中添加 JSTL 库时,可能会遇到以下一些问题:

1. 报错信息:`The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application`

解决方法:将 jstl-1.2.jar 和 standard-1.1.2.jar 放置在 WEB-INF/lib 目录下。

2. 报错信息:`According to TLD, tag c:forEach must be empty, but is not`

解决方法:将 `<c:forEach></c:forEach>` 转换为 `<c:forEach />`,或者在开始标签的位置添加 `</c:forEach>`(即闭合标签)。

3. 遍历 Map 对象时报错:`${s.key}` 无法输出 Map 的 Key 值。

解决方法:需要修改 `<c:forEach>` 标签中的属性值 items,从 `${hashMap}` 修改为 `${hashMap.entrySet()}`。这样在遍历 Map 的时候,就可以使用 `${s.key}` 输出 Key 的值,`${s.value}` 输出 Value 的值了。

修改后的代码如下所示:
<c:out value="hello baby"></c:out>
<c:forEach items="${hashMap.entrySet()}" var="s">
   ${s.key}
</c:forEach>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-10 03:53:08 | 显示全部楼层
问题描述:在Tomcat10中添加JSTL库后,使用<c:forEach>标签时会出现错误。

解决方案:在Tomcat10中,需要将JSTL库的jar包放在Tomcat的lib目录下,而不是WEB-INF/lib目录下。如果仍然出现错误,可能是因为缺少EL库的jar包,可以将EL库的jar包也放在Tomcat的lib目录下。

另外,在JSP页面中使用JSTL标签库时,需要在JSP页面中引入标签库的命名空间。在本例中,需要在JSP页面的开头加入以下代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

这样就可以正确使用<c:forEach>标签了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 03:54:13 | 显示全部楼层
这个是我导入的包
10.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 03:54:58 | 显示全部楼层
HTTP状态 500 - 内部服务器错误
类型 异常报告

消息 java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTag

描述 服务器遇到一个意外的情况,阻止它完成请求。

例外情况

jakarta.servlet.ServletException: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTag
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
        jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
根本原因。

java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTag
        java.base/java.lang.ClassLoader.defineClass1(Native Method)
        java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
        java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
        org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2487)
        org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:865)
        org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
        org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
        org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1236)
        org.apache.jasper.compiler.Parser.parseElements(Parser.java:1469)
        org.apache.jasper.compiler.Parser.parse(Parser.java:138)
        org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245)
        org.apache.jasper.compiler.ParserController.parse(ParserController.java:106)
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:396)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
        jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
根本原因。

java.lang.ClassNotFoundException: jakarta.servlet.jsp.jstl.core.LoopTag
        org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1437)
        org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
        java.base/java.lang.ClassLoader.defineClass1(Native Method)
        java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
        java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
        org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2487)
        org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:865)
        org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)
        org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1245)
        org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1236)
        org.apache.jasper.compiler.Parser.parseElements(Parser.java:1469)
        org.apache.jasper.compiler.Parser.parse(Parser.java:138)
        org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245)
        org.apache.jasper.compiler.ParserController.parse(ParserController.java:106)
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:211)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:396)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
        jakarta.servlet.http.HttpServlet.service(HttpServlet.java:631)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 03:59:20 | 显示全部楼层
isdkz 发表于 2023-5-10 03:53
问题描述:在Tomcat10中添加JSTL库后,使用标签时会出现错误。

解决方案:在Tomcat10中,需要将JSTL库的ja ...

这个是Tomcat的lib目录吗
9.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 04:02:59 | 显示全部楼层
isdkz 发表于 2023-5-10 03:53
问题描述:在Tomcat10中添加JSTL库后,使用标签时会出现错误。

解决方案:在Tomcat10中,需要将JSTL库的ja ...

zhege?
11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-10 07:29:56 | 显示全部楼层    本楼为最佳答案   
在 Tomcat 10 中添加 JSTL 库时,可能会遇到以下一些问题:

1. 报错信息:`The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application`

解决方法:将 jstl-1.2.jar 和 standard-1.1.2.jar 放置在 WEB-INF/lib 目录下。

2. 报错信息:`According to TLD, tag c:forEach must be empty, but is not`

解决方法:将 `<c:forEach></c:forEach>` 转换为 `<c:forEach />`,或者在开始标签的位置添加 `</c:forEach>`(即闭合标签)。

3. 遍历 Map 对象时报错:`${s.key}` 无法输出 Map 的 Key 值。

解决方法:需要修改 `<c:forEach>` 标签中的属性值 items,从 `${hashMap}` 修改为 `${hashMap.entrySet()}`。这样在遍历 Map 的时候,就可以使用 `${s.key}` 输出 Key 的值,`${s.value}` 输出 Value 的值了。

修改后的代码如下所示:
<c:out value="hello baby"></c:out>
<c:forEach items="${hashMap.entrySet()}" var="s">
   ${s.key}
</c:forEach>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 13:04:16 | 显示全部楼层
sfqxx 发表于 2023-5-10 07:29
在 Tomcat 10 中添加 JSTL 库时,可能会遇到以下一些问题:

1. 报错信息:`The absolute uri: http://ja ...

在吗?哥,我弄好了,内个我又下了一个api-jar好像好了,这一直接关系吗
999.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 13:06:15 | 显示全部楼层
sfqxx 发表于 2023-5-10 07:29
在 Tomcat 10 中添加 JSTL 库时,可能会遇到以下一些问题:

1. 报错信息:`The absolute uri: http://ja ...

我重换了一个jar包就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 06:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表