jstl 标签在jsp文件中不起作用,在tomcat 7中出现错误
我<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可以使用,但不适用于较新的用户。
第二个问题:
我忽略了我遇到的第一个问题,只是将/
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行:35,列: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版本。
回答:
但是,如果我更改为使用旧的命名空间,则
<%@ taglib prefix="c"
uri="http://java.sun.com/jstl/core"%>。其他变量未更改,则if标签有效,因为显示了if标签内的消息。
如果您的中standard.jar
包含JSTL 1.0,则可能会发生这种情况/WEB-INF/lib
。摆脱它。另请参见我们的JSTL
Wiki页面。顺便说一句,我假设您没有碰过Tomcat和JRE自己的/lib
文件夹,并且没有在其中放置任何与JSTL相关的JAR,或者没有认真地尝试解决问题就提取了JSTLJAR的内容。
顺便说一句,我正在使用servlet 2.5,jsp 2.0,jstl 1.2。
我确实尝试将jsp2.0升级到jsp2.1,以查看是否可以解决第一个问题,但是我不知道如何升级jsp版本。我对编程非常陌生。
您绝对不应/WEB-INF/lib
自己提供任何Servlet或JSP库。Servlet容器(在您的情况下为Tomcat)已经附带了它。
您只需要确保web.xml
根声明符合servlet容器支持的内容即可。Tomcat 7是与Servlet
3.0兼容的容器,因此您的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>
以上是 jstl 标签在jsp文件中不起作用,在tomcat 7中出现错误 的全部内容, 来源链接: utcz.com/qa/416621.html