omn​​ifaces genericEnumConverter和枚举属性

时间:2013-11-18 18:52:04

标签: jsf enums converter omnifaces

我正在使用omnifaces 1.7-snapshot genericEnumConverter。它按预期工作。我想知道是否可以在item标签上显示枚举属性而不是其值。我只能渲染枚举本身。像这样:

public enum ErrorType {
    ERR_001, ERR_002, ERR_003;

    private String number;

    static {
        ERR_001.number = "001";
        ERR_002.number = "002";
        ERR_003.number = "003";
    }

    public String getNumber() {
        return number;
    }
}

<f:selectItems value="#{ErrorType}" var="er" itemLabel="#{er.number}" itemValue="#{er}" />

1 个答案:

答案 0 :(得分:2)

我认为你正在<f:selectItems value>使用<o:importConstants>GenericEnumConverter没有处理这个问题。它仅在选择项目值和组件值之间进行转换时起作用。它在显示项目标签时不起任何作用。

<o:importConstants>基本上使EL范围内的枚举值可用作Map<String, Enum>。虽然<f:selectItems>可以使用Map<K, V>,但它不支持通过Map<K, V>迭代var。您需要先将其转换为Map.Entry[]

<f:selectItems value="#{ErrorType.entrySet().toArray()}" var="er" 
    itemValue="#{er.value}" itemLabel="#{er.value.number}"/>
相关问题