5

以下を使用して、アプリでヘルプ ドキュメントを取得しています。私の問題は、<h:graphicImage>がコンテキスト パスを正しく評価している間、h:outputLinkそれを何も評価しないことです。評価時間が異なることを理解しているため、$#の両方を使用してみました。h:outputLink

2 つの EL 式の評価方法の違いは何ですか?

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

2 に答える 2

15

コンテキスト パスが表示されないということは、JSP ではなく Facelets を実際に<h:outputLink>使用していることを示しています。はFacelets にはまったく存在しません。これはレガシー JSP に固有のものです。両方の式が空の文字列に評価されました。したがって、それらの間にはまったく違いはありません。${pageContext}

コンテキスト パスが表示される<h:graphicImage>ことは完全に予想されます。これは、コンポーネント自体によって自動的に含まれます。実際、式全体は不必要であり、以下はうまく機能するはずです。

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

<h:outputLink>実際には、コンテキスト パスが自動的に含まれることはありません。のみ<h:link>がそれを行います。自分で含める必要があります。Facelets では、 を使用して#{request}ハンドルを取得することができます。HttpServletRequestgetContextPath()<h:graphicImage>

<h:outputLink value="#{request.contextPath}/services/help.pdf">
于 2011-04-13T20:45:59.903 に答える
3

この #{facesContext.externalContext.requestContextPath} を試してください。これが、このリンクリンク テキストも確認するのに役立つことを願っています

よろしく、 セルジオ・バルデス

于 2010-12-22T19:46:27.880 に答える