JSF在DataTable

时间:2017-08-05 21:33:48

标签: primefaces enums localization

我有一个值存储为枚举,我想在Primefaces数据表中显示每个区域设置显示不同的值。

这是我目前在数据表中的内容:



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

</p:dataTable>
&#13;
&#13;
&#13;

问题是#{source.type}中的值。它应显示为&#34; Collection&#34;或&#34;例子&#34;用英语和&#34; Menge&#34;或者&#34; Beispiele&#34;在德语中,它目前只显示枚举的丑陋字符串表示,如COLLECTION或EXAMPLES。

必须有一个很好的方法来做到这一点,但我还没有想到它。此外,出于显而易见的原因,我不想将逻辑添加到模型中。

1 个答案:

答案 0 :(得分:-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>