代码之家  ›  专栏  ›  技术社区  ›  Adam

EL outputLink与graphicdimage的上下文路径计算差异

  •  5
  • Adam  · 技术社区  · 14 年前

    我正在使用以下内容在我们的应用程序中获取帮助文档。我的问题是 <h:graphicImage> 正确计算上下文路径 h:outputLink 把它化为乌有。我试过两者都用 $ # h: 输出链接 因为我知道他们有不同的评估时间。

    这两个EL表达式的计算方式有什么不同?

    <h:outputLink value="${pageContext.servletContext.contextPath}/services/help.pdf">
        <h:graphicImage 
            url="${pageContext.servletContext.contextPath}/images/help.png" 
            alt="Online Help"/>
    </h:outputLink>
    
    2 回复  |  直到 12 年前
        1
  •  15
  •   BalusC    12 年前

    上下文路径不出现在 <h:outputLink> 表明你是 事实上 使用Facelets而不是JSP。这个 ${pageContext} 根本不存在于脸上。它特定于遗留JSP。两个表达式的计算结果都是空字符串。因此他们之间根本没有区别。

    上下文路径出现在 <h:graphicImage> 完全是预料之中的。这是由组件本身自动包含的。事实上,整个表达式都是多余的,下面的语句应该也同样有效。

    <h:graphicImage url="/images/help.png" alt="Online Help"/>
    

    这个 <h: outputLink> 确实不自动包含上下文路径。只有 <h:link> 这样做。你需要自己把它包括进去。在Facelets中,可以使用 #{request} 掌握 HttpServletRequest 反过来又有一个 getContextPath() 以及(使用 <h: 图形图像> 在封面下)。

    <h:outputLink value="#{request.contextPath}/services/help.pdf">
    
        2
  •  3
  •   Sergio Valdez    14 年前

    试试这个{facesContext.externalContext.requestContextPath}我希望这也能帮助您检查这个链接 link text

    当做, 塞尔吉奥瓦尔德斯