EL表达式不会在Tomcat 5.5中执行,而是在tomcat 6.0.20中运行

我正在使用spring-web-mvc开发我的应用程序…

现在在我的控制器上它返回如下:

public class InterfacesManageController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { Map myModel = new HashMap(); myModel.put("interfacesList", this.interfacesSecurityProcessor.findByAll(0, null, null, null)); return new ModelAndView("common", "model", myModel); } 

现在,我的JSP包含以下代码:

   

现在,当我执行此操作到Windows平台,我有tomcat 6.0.20,ognl 2.6.11它给了我我想要的确切输出:

 117 eth1 118 eth1 119 eth0 

但是,当我在unix(cent os)平台上部署war文件时,我有tomcat 5.5,ognl表达式没有执行并给我输出如下:

 ${prod.id} ${prod.name} 

任何人都可以有解决方案,ognl表达版本和tomcat版本应该有什么问题?

提前致谢…

但是,当我在Unix(CentOS)平台上部署war文件时,我有Tomcat 5.5,EL表达式没有被执行并给我输出如下:

 ${prod.id} ${prod.name} 

换句话说,EL表达式根本没有得到评估并显示为纯文本? 这可能有以下一个或多个原因:

  1. 有问题的应用程序服务器不支持JSP 2.0。
  2. web.xml未声明为Servlet 2.4或更高版本。
  3. JSP的<%@page %>配置为isELIgnored=true
  4. web.xml配置了true

Tomcat 5.5是Servlet 2.4 / JSP 2.0,因此#1可能被划伤。 在部署之前,我没有在webapp中更改任何内容,因此#3和#4可能会被划伤。 现在离开#2。 也许您将其声明为Tomcat 6.0的Servlet 2.5,而Tomcat 5.5只能使用Servlet 2.4。 这样一切都会变得一团糟,因为Tomcat会回退到最不兼容的方式。 您需要将web.xml重新声明为Servlet 2.4,以便它可以在Tomcat 5.5和6.0中运行。 声明应如下:

    

您确定在Tomcat或Web应用程序的lib文件夹中包含了JSTL库吗?

这些链接将帮助您:

如何设置Tomcat以使用JSTL

如何在Web应用程序中引用和使用jstl

感谢BalusC的出色回答。 我遇到了他上面诊断出的完全相同的问题,他的解决方案让我成为了那里的一部分。 但是,我还必须确保我的应用程序的各种JSP和JSTL依赖项都是兼容的。 特别是,我正在引用JSTL 1.2,直到我将该依赖项更改为JSTL 1.1.2之后,此问题才消失(此时我还必须在taglibs.standard:1.1.2上添加显式依赖项)。

以下博客文章提供了有关不同版本之间兼容性的更多信息: http : //www.mularien.com/blog/2008/04/24/how-to-reference-and-use-jstl-in-your-web -应用/