当前位置: 首页 > 面试题库 >

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

洪季萌
2023-03-14
问题内容

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

提前致谢…


问题答案:

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


 类似资料:
  • 如果我在windows的命令行上执行我的python脚本,它运行得很好,但是当我在bash上运行它时,它只是一直在等待另一行,但是如果我尝试其他命令,比如,它会显示:

  • 所以我在eclipse中设置了一个基本的你好世界,我可以很容易地使用cmd编译它(我已经设置了所有必要的路径),但是当我尝试使用java命令来执行你好世界时,它总是返回相同的错误:错误:无法找到或加载主类helloWorld引起的:java.lang.NoClassDefFoundError: net/codejava/helloWorld(错误的名称:helloWorld) 以下是使用的代码:

  • 我刚刚完成了一个用于解密或encrpyt的AES类,它在windows上运行良好,但无法在linux上运行,出现以下错误: 给定的最终块未正确填充 完整代码如下: 请帮我解决这个问题,否则我的老板会解雇我的,非常感谢。

  • 虽然可以通过page指令的isELIgnored属性禁止在JSP页面中使用EL表达式,但是对每个JSP页面都设置isELIgnored属性就变得非常麻烦,因此,也可以在web.xml文件中禁止在所有或部分JSP页面中使用EL表达式语言。如果要在当前应用程序所有的JSP页面中禁止使用EL表达式,可以使用如下的配置代码: <web-app ...> ... ... <jsp-confi

  • 问题内容: 昨晚我在玩Java8 Lambda,我想知道是否有可能在运行时检索Lambda表达式。简而言之,据我所知,Lambda表达式在运行时被转换为(静态)方法,然后使用InvokeDynamics进行调用。 让我们举一个这样的例子: 其中将是以a 作为参数的自定义方法。在此方法内部,在这种情况下,如何以类似于Lambda表达式()的形式检索参数? 我尝试使用ASM5_BETA读取参数类的生成

  • 问题内容: 当我从移动应用程序或Web浏览器中调用SQL存储过程时,它会返回NULL,但是使用SQLPro for MSSQL软件调用该过程时,该过程将返回它所需要的内容。 问题答案: 说明: 您需要将第一行放在存储过程中,以防止返回T-SQL语句影响的行数作为结果集的一部分。这就是产生NULL结果的原因。 如果您无法更改存储过程,请使用激活下一个结果,然后获取数据。 注意,请始终使用准备好的语句

  • 问题内容: 如何在Java正则表达式中表示“无前缀”?例如,我只想搜索“:”,但仅在它不直接以“ \”开头时。我怎样才能做到这一点? 问题答案: 在后面使用负数: 四个反斜杠的原因是: 反斜杠是正则表达式中的特殊字符,因此您需要正则表达式来匹配单个反斜杠。 必须在Java字符串中对反斜杠进行转义,因此上述每个反斜杠必须都写为,总共为四个。 示例代码: 输出:

  • 当我执行“MVN测试”时,我可以在日志中看到,在maven spring boot插件实例化spring boot实例之前,Cucumber runner被实例化: 我知道我的Cucumber测试实际上是一个集成测试,所以我将其作为“MVN验证”生命周期阶段的一部分运行,方法是将其重命名为CucumberRunnerIT.java,并按如下所示配置pom.xml: 但是,当我作为“验证”的一部分运