2017-08-05 66 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這樣的枚舉的醜陋字符串表示形式。

必須有一個很好的方法來做到這一點,但我還沒有弄明白。另外,我不想將邏輯添加到模型中,原因很明顯。在.xhtml

public enum Type { 

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

    private final String label; 

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

    public String getLabel(){ 
     return label; 
    } 
} 

顯示自定義標籤:

+0

不,在這種情況下失敗,但你可以撤消我的編輯,點擊編輯歷史記錄中的1個按鈕。在數據表中需要它的事實不會導致與數據表相關的問題 – Kukeltje

+0

與數據表的關係只是爲了處理每個類型的迭代。你願意寫一個答案來解釋你將如何解決這個問題? – KG6ZVP

+0

我兩次指出你在正確的方向。首先通過編輯/縮小問題/編輯標記,甚至在我最後的評論中。而他SHOUTING也有幫助。除此之外,它是0:35這裏,睡覺時間 – Kukeltje

回答

-1

在枚舉添加一個標籤字段

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

如果你有15種語言支持,該怎麼辦?你讀過關於這個問題的鏈接嗎? – Kukeltje

+0

Ooops我刪除了這條評論。請爲i18n和jsf以及enum搜索stackoverflow。 https://stackoverflow.com/questions/4375578/localizing-enum-values-in-resource-bundle OP **拒絕**看到他/她的問題是一個普通的jsf/enum/i18n問題聲稱它是100%可數據表和primefaces相關 – Kukeltje