【问题标题】:EL in a JSP stopped evaluatingJSP 中的 EL 停止评估
【发布时间】:2010-10-04 23:32:50
【问题描述】:

在 JSP 页面中(index.jsp):

${requestContext.requestURL} is the URL

只显示表达式本身。它曾经被评估为“http://.../somerset/”

我在 Eclipse 中使用 maven-archetype-webapp 原型创建了 Maven 项目。 Jetty 版本是 jetty-6.1.14。

我的 web.xml 很简单:

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <servlet>
      <servlet-name>SomersetServlet</servlet-name>
      <display-name>SomersetServlet</display-name>
      <description></description>
      <servlet-class>com.foo.somerset.SomersetServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>SomersetServlet</servlet-name>
      <url-pattern>/som.do</url-pattern>
    </servlet-mapping>
</web-app>

【问题讨论】:

    标签: java jsp maven-2 jetty el


    【解决方案1】:

    由于一些可能的原因,请参阅Javascript String.replace(/\$/,str) works weirdly in jsp file。

    您的 web.xml 应包含对 web-app_2_4.xsd 架构的引用,例如

    <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/web-app_2_4.xsd"
          version="2.4">
    

    这将启用 servlet 2.4 和 jsp 2.0 处理,其中包括 EL。

    顺便说一句,requestContext 不是有效的隐式对象。

    【讨论】:

    • 它正在工作!以前它有效,当我转向 Maven 时,Maven 原型自动生成忘记添加这些属性!谢谢!然而,mvn jetty:run 在第一次运行时被唤醒,但在 Eclipse 中,它需要多次尝试才能使 EL 工作。
    【解决方案2】:

    不正确匹配的引号会导致这种行为,其中表达式只会被视为字符串。如果是这种情况,您的 IDE 通常会以不同的颜色突出显示它。

    【讨论】:

      【解决方案3】:

      确保您有指令,并且包含您使用的其他库

      <jsp:root .....
      

      这里有更多关于定义的信息

      http://java.sun.com/products/jsp/tags/12/syntaxref123.html

      【讨论】:

      • 据我所知,EL 在没有任何 taglib 声明的情况下工作,事实上,它不使用任何 taglib。而且, 正确计算为 200。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多