1

「facelets.DEVELOPMENT」(web.xmlで構成)などのfaceletsのパラメータの値をxhtmlページに出力する方法はありますか?

PS .: web.xml になくても、これらの値を出力したいと思います。このような場合、設定されたデフォルト値が出力されます。

ありがとう。

4

1 に答える 1

0

デフォルトではなくても、EL内のすべてのFacelets固有のパラメーターを直接参照することはできませんが、EL内のすべてのコンテキストパラメーターを参照することはできますこれらは、基本的にを参照する暗黙のELオブジェクト によって使用できます。#{initParam}ExternalContext#getInitParameterMap()

したがって、パラメータ名を事前に知っている場合は、次のようにする必要があります。

<p>
    Value of facelets.DEVELOPMENT context param: 
    #{initParam['facelets.DEVELOPMENT']}
</p>

または、すべてのコンテキストパラメータを表示したいだけの場合:

<dl>
    <c:forEach items="#{initParam}" var="p">
        <dt>#{p.key}</dt>
        <dd>#{p.value}</dd>
    </c:forEach>
</dl>

マップをサポートしていない<c:forEach>ため、が使用されていることに注意してください。<ui:repeat>ただし、ビューのビルド時間タグではなく、ビューのレンダリング時間コンポーネントが本当に必要な場合は<ui:repeat>、EL 2.2がご使用の環境でサポートされていれば、を使用することもできます。

<dl>
    <ui:repeat value="#{initParam.entrySet().toArray()}" var="p">
        <dt>#{p.key}</dt>
        <dd>#{p.value}</dd>
    </ui:repeat>
</dl>

いずれにせよ、Faceletsパラメータを具体的にフィルタリングするには、などを使用#{p.key}して開始されていないかどうかを確認します。"facelets."#{fn:startsWith()}

<ui:fragment rendered="#{fn:startsWith(p.key, 'facelets.')}">
    <dt>#{p.key}</dt>
    <dd>#{p.value}</dd>
</ui:fragment>

コメントに従って更新すると、特にJSFプロジェクトステージ(通常はJSF2にあり、javax.faces.PROJECT_STAGEコンテキストパラメーターによって設定されます。これfacelets.DEVELOPMENTは古いFacelets 1.xに固有です)に関心があるようです。これはApplication#getProjectStage()、次の方法で利用できます。

#{facesContext.application.projectStage}

JSFが開発段階にあるかどうかを具体的に確認するには、

<ui:fragment rendered="#{facesContext.application.projectStage == 'Development'}">
    <div class="warning">JSF is running in development stage!</div>
</ui:fragment>

繰り返しますが、すべての暗黙的なELオブジェクトの概要については、最初の段落のリンクを確認してください。

于 2013-01-17T19:47:31.173 に答える