gpt4 book ai didi

java - jSTL tags not working in jsp file, 在 tomcat 7 中出现错误

转载 作者:行者123 更新时间:2023-11-28 21:56:49 24 4
gpt4 key购买 nike

我在使用 jSTL 标签时遇到问题 <c:if>在jsp文件中。基本上我应该将其作为 2 个问题,尽管它们是相关的。

第一个问题:

在我的 WEB-INF/lib 中,我放了一个 jSTL 1.2.jar

在我的 jsp 文件中,我把这个 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> .

在我的 jsp 文件中,我使用 <c:if>做某事。如果条件为真,它会显示一些特殊的信息

基本上里面的内容<c:if>不起作用,因为即使条件为真也不会显示消息。

但是如果我改为使用旧的命名空间,<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> .其他没有改变,那么if标签就起作用了,因为显示了if标签里面的信息。

我的第一个问题是为什么我必须在 namespace 中使用/jSTL 而不是/jsp/jSTL。我正在使用 jSTL1.2.jar。所以我应该为 1.2 使用较新的 uri。但是,较旧的 uri 有效但较新的 uri 无效。

第二个问题:

我忽略了我的第一个问题,只使用/jSTL 作为我的命名空间,因为它使我的网络应用程序按照我想要的方式工作。但是,当我将我的网络应用程序部署到 tomcat 7.X 时,它显示如下异常:

org.apache.jasper.JasperException: /mywebapp.jsp (line: 35, column: 10) According to TLD or attribute directive in tag file, attribute test does not accept any expressions org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)

在/mywebapp.jsp line:35, column:10,即 标签。

如果我将命名空间从 <%@ taglib prefix="c"uri="http://java.sun.com/jSTL/core"%> 更改为 <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jSTL/core"%>,在tomcat中可以部署成功,但是 标签里面的功能没有用。 <c:if> 之外的其他代码标签工作。

所以我很困惑,真的很想知道如何解决这个问题。

顺便说一句,我使用的是servlet 2.5、jsp 2.0、jSTL 1.2。我确实尝试将 jsp2.0 升级到 jsp2.1 以查看是否可以解决第一个问题,但我不知道如何升级 jsp 版本。

最佳答案

But if I changed to use the older namespace, <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>. others are not changed, then the if tag is working, because the message inside the if tag is shown.

如果你有一个 standard.jar 就会发生这种情况/WEB-INF/lib 中的 JSTL 1.0 .摆脱它。另见 our JSTL wiki page .顺便说一下,我假设您没有触及 Tomcat 和 JRE 自己的 /lib文件夹并且没有在其中放置任何与 JSTL 相关的 JAR,或者在粗心地尝试解决问题时提取了 JSTL JAR 的内容。


By the way, I am using servlet 2.5, jsp 2.0, jstl 1.2. I did try to upgrade the jsp2.0 to jsp2.1 in order to see if I can fix the first problem, but I have no idea how to upgrade jsp version. I am very new to programming.

您绝对不应该在 /WEB-INF/lib 中提供任何 Servlet 或 JSP 库你自己。 servlet 容器(在您的例子中是 Tomcat)已随附。另见 How do I import the javax.servlet API in my Eclipse project?

您只需要确保您的 web.xml根声明符合您的 servlet 容器支持的任何内容。 Tomcat 7 is a Servlet 3.0 compatible container , 所以你的 web.xml根声明应如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">

<!-- Config here. -->

</web-app>

关于java - jSTL <c :if> tags not working in jsp file, 在 tomcat 7 中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11573725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com