16

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

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

  public class InterfacesManageController implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception  {

    Map<String, Object> myModel = new HashMap<String, Object>();

    myModel.put("interfacesList", this.interfacesSecurityProcessor.findByAll(0, null, null, null));

    return new ModelAndView("common", "model", myModel);
}

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

<c:forEach items="${model.interfacesList}" var="prod">
     <c:out value="${prod.id}"/> <c:out value="${prod.name}"/><br><br>
</c:forEach>

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

117 eth1

118 eth1

119 eth0

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

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

谁能有解决方案,ognl表达式版本和tomcat版本应该是什么问题?

提前致谢...

4

3 回答 3

36

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

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

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

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

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.xmlServlet 2.4,以便它可以在 Tomcat 5.5 和 6.0 中运行。声明应如下所示:

<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- Here you go. -->

</web-app>
于 2009-11-12T11:48:43.323 回答
1

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

这些链接将帮助您:

如何设置 Tomcat 以使用 JSTL

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

于 2009-11-12T11:30:27.790 回答
1

感谢 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 -应用/

于 2013-09-03T16:44:51.270 回答