Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EL在jsp中不工作,servlet api之间可能不匹配?_Java_Jsp_Tomcat_Jstl_El - Fatal编程技术网

Java EL在jsp中不工作,servlet api之间可能不匹配?

Java EL在jsp中不工作,servlet api之间可能不匹配?,java,jsp,tomcat,jstl,el,Java,Jsp,Tomcat,Jstl,El,我正在尝试测试一个简单的webapp,以在一个只支持servlet api 2.3的servlet容器上工作。不幸的是,我还没有访问2.3容器的权限,所以我尝试在tomcat的最新版本上进行测试 我有以下设置: Tomcat7,它有ServletAPI3.0,没有标准的JSTL支持 在my web.xml中,我声明使用servlet 2.3: 在我的一个maven依赖项中,我添加了jstl库,因此它现在位于我的类路径上: javax.servlet jstl 1.2 不幸的是,我的EL不起作

我正在尝试测试一个简单的webapp,以在一个只支持servlet api 2.3的servlet容器上工作。不幸的是,我还没有访问2.3容器的权限,所以我尝试在tomcat的最新版本上进行测试

我有以下设置:

Tomcat7,它有ServletAPI3.0,没有标准的JSTL支持 在my web.xml中,我声明使用servlet 2.3: 在我的一个maven依赖项中,我添加了jstl库,因此它现在位于我的类路径上:

javax.servlet jstl 1.2

不幸的是,我的EL不起作用,它们只是按原样渲染。例如:${2+2}未显示为4。以下是我的jsp页面的一个片段:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<body>
    <h2>Hello World</h2>
    <c:out value="${2+2}"/>
</body>

</html>
所以我假设这是因为我的web.xml声明说它是2.3,但我的实际servlet容器tomcat希望将3.0与jstl 1.2一起使用,这两者之间不匹配。如果我真的想让它工作,我可以更新我的web.xml以使用3.0版。但是,这在另一个2.3版本的servlet容器上不起作用。所以我的问题是,我如何测试我的2.3 webapp,有没有旧版本的tomcat也使用2.3?还是Servlet3.0向后兼容?我是否误解了什么

注意:页面和webapp的实际加载通常可以正常工作,只有EL${something}没有计算。

使用页面标记中的IsAligned

<%@ page language="java" 
contentType="text/html; 
charset=ISO-8859-1" pageEncoding="ISO-8859-1"  
isELIgnored="false"%>
在页面标记中使用IsAligned

<%@ page language="java" 
contentType="text/html; 
charset=ISO-8859-1" pageEncoding="ISO-8859-1"  
isELIgnored="false"%>

首先检查jstl.jar和standard.jar WEB-INF/lib文件夹的版本是否正确。

首先检查jstl.jar和standard.jar WEB-INF/lib文件夹的版本是否正确。

如果您使用的是servlet版本2.3或低于2.3,则默认情况下EL被禁用,因此您必须启用它,这意味着默认情况下它是正确的:

已对齐=真

你必须把它弄错

但是,如果您使用的是比2.3更高版本的servlet,那么默认情况下它是启用的

未对齐=错误

您可以通过以下方式启用或删除

<%@ page isELIgnored ="true|false" %> 

一次只能给出一个值true或false。如果为true,则EL表达式在静态文本或标记属性中出现时将被忽略。如果为false,容器将对EL表达式求值。

如果您使用的是servlet 2.3版或2.3版之前的版本,则默认情况下EL被禁用,因此您必须启用它,这意味着默认情况下EL为true,如下所示:

已对齐=真

你必须把它弄错

但是,如果您使用的是比2.3更高版本的servlet,那么默认情况下它是启用的

未对齐=错误

您可以通过以下方式启用或删除

<%@ page isELIgnored ="true|false" %> 

一次只能给出一个值true或false。如果为true,则EL表达式在静态文本或标记属性中出现时将被忽略。如果为false,EL表达式将由容器计算。

否,我的lib文件夹中没有任何内容。出于编译的原因,我使用maven依赖项,运行时使用tomcat/lib。我很确定我已经得到了所有必需的JSP,因为它现在可以工作了。请看其他答案,它们不在我的web inf/libNo中,我的lib文件夹中没有任何内容。出于编译的原因,我使用maven依赖项,运行时使用tomcat/lib。我非常确定我已经得到了所有必需的JSP,因为它现在可以工作了。看到其他答案,它们只是不在我的web inf/lib中