小编典典

EL表达式不会在Tomcat 5.5中执行,但可以在tomcat 6.0.20中运行

jsp

我正在使用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版本应该是什么问题?

提前致谢…


阅读 293

收藏
2020-06-08

共1个答案

小编典典

但是,当我在装有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><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>
2020-06-08