Java JSP中的表达式语言不工作
我不熟悉JSP和使用表达式语言。我正在使用EclipseGalileo版本2.5和Tomcat6服务器。我只是想问一下,我的简单表达式语言不是像我写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"
${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表达式不会被计算?可能有以下一个或多个原因:
web.xml
未声明为Servlet 2.4或更高版本@页面
配置为isaligned=true
中配置为true
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。我需要改变两件事:
删除它。我遇到了一个问题,在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"%>