PrimeFaces 3.5の新しいRTLサポートを動的に機能させるために、 web.xmlに以下を追加しました。
<context-param>
<param-name>primefaces.DIR</param-name>
<param-value>#{facesBean.direction}</param-value>
</context-param>
ご覧のとおり、パラメータ値はEL式であり、Beanプロパティから評価されます:direction:
private String direction = "ltr";
//......
public String getDirection() {
if (FacesContext.getCurrentInstance().getViewRoot().getLocale().getLanguage() == "ar") {
direction = "rtl";
} else {
direction = "ltr";
}
return direction;
}
ただし、これは機能しません(web.xmlはxhtmlファイルと同じ方法でロードされないため、この単純な方法で機能するとは信じられません...)
たとえば、ACCORDIONに方向の値に反応するように明示的に指示すると、正常に実行されます(ロケール言語がarに変更された場合、dirはrtl値を受け取り、frまたはenに変更された場合、dir属性が受け取る値はltrです)。
<p:accordionPanel dir="#{facesBean.direction}" id="accordion_services" dynamic="true" cache="true"
style="text-align: justify;" >
<p:tab title="#{i18n.seep}">
<h:panelGrid columns="2" cellpadding="10">
<!-- Remainder of code here ...... -->
後者のソリューションは、DIR属性を持つすべてのPrimeFacesコンポーネントに適用できますが、これは非生産的であり、多大な時間を消費します。アプリケーションスコープのDIRパラメータは理想的なソリューションであり、EL式をサポートしていると言われています。だから私はそれを機能させることに興味があります。
手がかりはありますか?
ありがとう。
JBoss AS 7.1 Mojarra 2.1PrimeFaces3.5最新のFirefox/Chrome
参照: PrimeFaces 3.5ユーザーガイドの491ページ:
*グローバル構成
Primefaces.DIRグローバル設定をrtlに使用すると、PrimeFaces RTL対応コンポーネント(データテーブル、アコーディオン、タブビュー、ダイアログ、ツリーなど)にRTLモードでレンダリングするように指示されます。*
`<context-param>
<param-name>primefaces.DIR</param-name>
<param-value>rtl</param-value>
</context-param>`
パラメーター値は、動的値のEL式にすることもできます。今後のPrimeFacesリリースでは、より多くのコンポーネントが組み込みのRTLサポートを受ける予定です。それまでは、使用するコンポーネントがそれを提供しない場合は、アプリケーションでcssとjavascriptをオーバーライドすることが解決策になります。491