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

Nir*_*mal 15 java jsp tomcat el

我正在使用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);
}
Run Code Online (Sandbox Code Playgroud)

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

<c:forEach items="${model.interfacesList}" var="prod">
     <c:out value="${prod.id}"/> <c:out value="${prod.name}"/><br><br>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

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

117 eth1

118 eth1

119 eth0
Run Code Online (Sandbox Code Playgroud)

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

${prod.id} ${prod.name}
Run Code Online (Sandbox Code Playgroud)

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

提前致谢...

Bal*_*usC 35

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

${prod.id} ${prod.name}
Run Code Online (Sandbox Code Playgroud)

换句话说,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>
Run Code Online (Sandbox Code Playgroud)