【发布时间】:2012-07-19 09:33:25
【问题描述】:
我在 jsp 文件中使用 jstl 标记 <c:if> 时遇到问题。基本上我应该把它作为 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标签里面的信息显示出来了。
我的第一个问题是为什么我必须在命名空间中使用 /jstl 而不是 /jsp/jstl。我正在使用jstl1.2.jar。所以我应该为 1.2 使用较新的 uri。但是,较旧的 uri 有效,但较新的 uir 无效。
第二个问题:
我忽略了我遇到的第一个问题,只是使用 /jstl 作为我的命名空间,因为它使我的 Web 应用程序按照我想要的方式工作。但是,当我将 Web 应用程序部署到 tomcat 7.X 时,它会显示以下异常:
org.apache.jasper.JasperException:/mywebapp.jsp(行:35,列:10) 根据标签文件中的 TLD 或属性指令,属性测试 不接受任何表达 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
在/mywebapp.jsp line:35, column:10,即
如果我将命名空间从 更改为 ,可以成功部署到tomcat,但是<c:if> 标签之外的其他代码虽然有效。
所以我很困惑,很想知道如何解决这个问题。
顺便说一句,我使用的是 servlet 2.5、jsp 2.0、jstl 1.2。我确实尝试将 jsp2.0 升级到 jsp2.1 以查看是否可以解决第一个问题,但我不知道如何升级 jsp 版本。
【问题讨论】:
-
我冒昧地猜测您的 if 语法不正确。我建议发布您的代码,以便我们查看。
标签: java jsp tomcat jstl tomcat7