「facelets.DEVELOPMENT」(web.xmlで構成)などのfaceletsのパラメータの値をxhtmlページに出力する方法はありますか?
PS .: web.xml になくても、これらの値を出力したいと思います。このような場合、設定されたデフォルト値が出力されます。
ありがとう。
デフォルトではなくても、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オブジェクトの概要については、最初の段落のリンクを確認してください。