我正在使用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}" />
答案 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}"/>