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 JSP中的表达式语言不工作_Java_Jsp_El - Fatal编程技术网

Java JSP中的表达式语言不工作

Java JSP中的表达式语言不工作,java,jsp,el,Java,Jsp,El,我不熟悉JSP和使用表达式语言。我正在使用EclipseGalileo版本2.5和Tomcat6服务器。我只是想问一下,我的简单表达式语言不是像我写${1>2}那样打印值,它假设为false,但它仅在呈现页面时显示${1>2}。但是当我使用时,它正确地打印了false。我认为标签库有问题。请告知我原因,我将提供一个示例代码,以便您了解我的错误:- <%@ page language="java" contentType="text/html; charset=ISO-8859-1"

我不熟悉JSP和使用表达式语言。我正在使用EclipseGalileo版本2.5和Tomcat6服务器。我只是想问一下,我的简单表达式语言不是像我写
${1>2}
那样打印值,它假设为false,但它仅在呈现页面时显示
${1>2}
。但是当我使用
时,它正确地打印了false。我认为标签库有问题。请告知我原因,我将提供一个示例代码,以便您了解我的错误:-

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

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


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Expression Language Example</title>
</head>
<body>

Is 1 greater than 2 using cout  :<c:out value="${1>2}"/>

Is 1 greater than 2 without using cout: ${1>2}
</body>
</html> 
在我的lib文件夹中,我只添加了
jstl.jar
,这样我就可以使用
标记来显示,但是我的EL for模板文本不起作用

我引用了我之前提供的一篇关于EL不工作的文章:

换句话说,EL表达式不会被计算?可能有以下一个或多个原因:

  • 有问题的应用服务器不支持JSP 2.0
  • web.xml
    未声明为Servlet 2.4或更高版本
  • @页面
    配置为
    isaligned=true
  • web.xml在
    中配置为
    true
  • 在您的特殊情况下,EL在taglibs中工作,但在模板文本中不工作,所以我怀疑这是由第2点引起的。确保您的
    web.xml
    至少声明为Servlet 2.4。由于Tomcat6.0支持Servlet2.5,我建议将您的
    web.xml
    声明为Servlet2.5:

    <web-app 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="Your_WebApp_ID"
        version="2.5">
    
        <!-- Here you go. -->
    
    </web-app>
    
    
    
    我在这方面看到的另一个罕见的原因是,在类路径中与EL JAR发生了冲突。确保您没有将任何appserver特定的JAR文件复制到您的webapp的
    WEB-INF/lib
    或更糟糕的
    JRE/lib

    由于您已经在使用Eclipse和Tomcat,我将回顾一下您在这方面使用的开发步骤。确保您使用的是“Eclipse for JavaEEdevelopers”,并且您已经在Eclipse的Servers视图中集成了Tomcat实例,并且您已经创建了一个动态Web项目集“Servlet 2.5”,它使用了Tomcat实例。这样,一切都应该自动进行(Eclipse将在构建路径本身中获取appserver的库,并自动生成符合Servlet 2.5的
    web.xml

    更新:根据您的更新:那些
    com.servlet.El
    servlet看起来可疑。他们到底做什么?艾尔?删除它们并重试。

    ,但我将添加以下注释:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
    
    
    名称空间应该包含一个“jsp”(如上所述)。鉴于此名称空间错误可能是由于遵循旧的说明造成的,请检查最新的文档,以确保在
    WEB-INF/lib
    中未包含任何过时的库。容器中包含了许多以前是独立的技术(EL语言就是其中之一)

    顺便说一句,我通常会使用这样的关键字-这对XML及其同类更友好。

    在我的例子中,我由maven archetype generator生成了一个webapp,我使用maven archetype webapp。我需要改变两件事:

  • 在web.xml中,将标题更改为:

    
    
  • 默认情况下,eclipse生成的jsp文件的标题为:

    
    

  • 删除它。

    我遇到了一个问题,在JSP中的
    行中,由eclipse启动的tomcat没有正确解释EL。使用war并将其复制到
    webapps
    文件夹中,然后使用命令行启动tomcat就完成了这项工作


    所以显然eclipse tomcat插件在
    上有问题

    在页面顶部设置
    对我很有帮助。我不知道为什么这是我的问题的根源。还不清楚为什么

    我还注意到servlet不应该命名为“jsp”、“default”、“ssi”、“cgi”-这样命名也会破坏jsp功能,因为它们是内置的Tomcat servlet。@BalusC。。我也有同样的问题。我可以用你的web.xml修改解决方案解决这个问题。。非常感谢你……另外,有必要补充一点,那只会对我有帮助!!!!Tomcat 7,java 8是的。我的web.xml版本是2.3。谢谢你,先生!我在一个旧的Tomcat 5.5中遇到了这个问题,并通过使用2_5.xsd和version=“2.5”解决了从web应用程序2.5到2.4的问题。我们的解决方案非常棒。在尝试了很多其他选择之后。你的是为美赞克工作的。在我的情况下,它起了作用。哦,我的上帝。这奏效了:)非常感谢你节省了我的时间。
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>