是否可以在FullArgSpec(args=['a', 'b'], varargs=None, varkw=None, defaults=(10,), kwonlyargs=['c', 'd'], kwonlydefaults={'c': 20, 'd': 30}, annotations={})
或ui:repeat
中迭代ENUM?
我正在使用Omnifaces 2.5的c:forEach
。
示例代码:
o:importConstants
但它来了:
<o:importConstants type="my.package.MyEnum"></o:importConstants>
<c:forEach var="icon" items="#{MyEnum}">
#{icon.toString()}
</c:forEach>
答案 0 :(得分:2)
<o:importConstants>
将枚举值转换为Map<String, E>
,其中map键是枚举名称的字符串表示形式,map值是实际的枚举实例本身。您现在正在尝试的是将每个Map.Entry
实例打印为字符串。您实际上应该使用其getKey()
和/或getValue()
方法。
直接对Map
进行迭代,截至目前仅<c:forEach>
支持。另请参阅How to use jstl foreach directly over the values of a map?
<c:forEach items="#{MyEnum}" var="entry">
Map key: #{entry.key} <br/>
Map value: #{entry.value} <br/>
</c:forEach>
<ui:repeat>
(和<h:dataTable>
)仅支持JSF 2.3。在那之前,你最好迭代Map#values()
。
<ui:repeat value="#{MyEnum.values()}" var="value">
Map value: #{value} <br/>
</ui:repeat>