我<c:if>
在 jsp 文件中使用 jstl 标记时遇到问题。基本上我应该把它作为两个问题,尽管它们是相关的。
第一个问题:
在我的 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 (line: 35, column: 10) 根据 TLD 或标记文件中的属性指令,属性测试不接受任何表达式 org.apache.jasper.compiler.DefaultErrorHandler.jspError( DefaultErrorHandler.java:42)
在 /mywebapp.jsp line:35, column:10 中,即 <c:if> 标记。
如果我将命名空间从 <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> 更改为 <%@ taglib prefix="c" uri="http:// /java.sun.com/jsp/jstl/core"%>,可以成功部署到tomcat,但是<c:if>标签里面的功能没有用。标记之外的其他代码<c:if>
虽然有效。
所以我很困惑,真的很想知道如何解决这个问题。
顺便说一句,我使用的是 servlet 2.5、jsp 2.0、jstl 1.2。我确实尝试将 jsp2.0 升级到 jsp2.1 以查看是否可以解决第一个问题,但我不知道如何升级 jsp 版本。