2017-08-05 15 views
1

私は、ロケールごとに異なる値で表示されるPrimefacesデータテーブルに表示する列挙型として格納されている値を持っています。JSF DataTableの列挙型のカスタム文字列を表示

これは私は現在、データテーブルに持っているものである。

<p:dataTable id="DtSources" var="source" value="#{sourceView.sources}" selection="#{sourceView.selectedSource}" selectionMode="single" scrollable="true" resizableColumns="true" rowKey="#{source.id}"> 
 
\t <f:facet name="header">Sources</f:facet> 
 
\t 
 
\t <p:column headerText="Type"> 
 
\t \t <h:outputText value="#{source.type}" /> <!-- This is what I'm trying to fix --> 
 
\t </p:column> 
 

 
</p:dataTable>

問題が#{source.type}内の値です。 "Collection"や "Examples"として英語で表示され、ドイツ語では "Menge"や "Beispiele"のように表示され、現在はCOLLECTIONやEXAMPLESのような列挙型の醜い文字列表現しか表示されません。

これを行うには良い方法があるに違いありませんが、私はまだそれを理解していません。また、明らかな理由から、モデルにロジックを追加したくありません。

+0

いいえ、それはこの場合には失敗しますが、あなたが私を元に戻すことができます編集履歴で1ボタンをクリックします。あなたがデータテーブルでそれを必要としているという事実は、データテーブルに関連する/引き起こされた問題を生じさせません。 – Kukeltje

+0

データテーブルとの関係はfor-eachタイプの繰り返しと関係があるだけです。あなたはこの問題をどのように解決するかを説明する答えを書こうと思いますか? – KG6ZVP

+0

私はあなたを正しい方向に2度指摘しました。まず、問題の編集/絞り込み、最後のコメントでタグ付けの編集などを行います。そして、彼はまた助けをしました。それ以外に、それは0:35ここでは、就寝時間 – Kukeltje

答えて

-1

あなたの列挙型でラベルフィールドを追加します。

public enum Type { 

    COLLECTION ("Collection), 
    EXAMPLES("Examples"); 

    private final String label; 

    Type (String label){ 
     this.label= label; 
    } 

    public String getLabel(){ 
     return label; 
    } 
} 

表示するカスタムラベルをご.xhtmlに:

<p:column headerText="Type"> 
    <p:outputLabel value="#{source.type.label}" /> 
</p:column> 
+0

サポートする言語が15種類ある場合はどうなりますか?質問に投稿したリンクを読んだことはありますか? – Kukeltje

+0

私はこのコメントを削除しました。 i18nとjsfとenumのstackoverflowを検索してください。 https://stackoverflow.com/questions/4375578/localizing-enum-values-in-resource-bundle OP **彼/彼女の問題が普通のjsf/enum/i18nの問題であることを確認するのを拒否すると、100%のデータ可能ですプライムフェイスは – Kukeltje

関連する問題