我<c:if>在jsp文件中使用jstl标记时遇到问题。基本上,尽管它们是相关的,但我应该将其作为两个问题。
<c:if>
在我的WEB-INF / lib中,我放了一个jstl 1.2.jar
在我的jsp文件中,放置了<%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%>。
<%@ 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标记内的消息。
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
我的第一个问题是为什么我必须在命名空间中使用/ 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的内容。
standard.jar
/WEB-INF/lib
/lib
顺便说一句,我正在使用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根声明应如下所示:
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>