1

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

4

1 に答える 1

0

RTLは現在web.xmlでELをサポートしていません(私はPF 3.5を使用しています)PFチームの機能リクエストを作成しました

この質問をPFフォーラムに再度投稿しましたが、ここで回答を得ました

参照:

web.xml内でJSFEL式を使用する

その修正を更新 し、次のPrimefaces4.1で利用可能になります

于 2013-08-29T21:11:17.460 に答える