EL上下文路径评估outputLink和graphicImage之间的差异

2023-12-12

我正在使用以下内容在我们的应用程序中获取帮助文档。我的问题是,虽然<h:graphicImage>正确评估上下文路径,h:outputLink将其评价为无。我尝试过同时使用$ and # in the h:outputLink因为我知道他们有不同的评估时间。

这两个 EL 表达式的求值方式有何不同?

<h:outputLink value="${pageContext.servletContext.contextPath}/services/help.pdf">
    <h:graphicImage 
        url="${pageContext.servletContext.contextPath}/images/help.png" 
        alt="Online Help"/>
</h:outputLink>

上下文路径没有出现在<h:outputLink>表明你是actually使用 Facelets 代替 JSP。这${pageContext}Facelets 中根本不存在。它特定于旧版 JSP。两个表达式的计算结果均为空字符串。因此,它们之间根本没有区别。

上下文路径出现在<h:graphicImage>是完全值得期待的。这是组件本身自动包含的。事实上,整个表达式是多余的,下面的应该也可以。

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

The <h:outputLink>确实不会自动包含上下文路径。只有<h:link>这样做。您需要自己将其包括在内。在 Facelets 中,您可以使用#{request}掌握HttpServletRequest依次有一个getContextPath()以及(并且由<h:graphicImage>在封面下)。

<h:outputLink value="#{request.contextPath}/services/help.pdf">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EL上下文路径评估outputLink和graphicImage之间的差异 的相关文章

随机推荐