2017-03-22 7 views
1

ui:repeatまたはc:forEachでENUMを反復処理できますか? 私はOmnifaces 2.5のo:importConstantsを使用しています。<o:importConstants>によってインポートされた列挙値を反復する

例コード:

<o:importConstants type="my.package.MyEnum"></o:importConstants> 
<c:forEach var="icon" items="#{MyEnum}"> 
    #{icon.toString()} 
</c:forEach> 

それが来る:

c[email protected]565a5787 

c[email protected]6c01f0ce 

c[email protected]2cd6ac37 

c[email protected]7b6d8d37 

c[email protected]7f8f1bb2 

答えて

2

<o:importConstants>マップキーは列挙名の文字列表現とマップ値であるMap<String, E>に列挙値に変換します実際のenumインスタンスそのものです。基本的に現在試みているのは、各Map.Entryのインスタンスを文字列として出力することです。実際にはgetKey()および/またはgetValue()メソッドを代わりに使用する必要があります。

Mapを直接反復することは、<c:forEach>でのみサポートされています。唯一のJSF 2.3の上でそれをサポートしてもHow to use jstl foreach directly over the values of a map?

​​

<ui:repeat>(および<h:dataTable>)を参照してください。それまでは、代わりにMap#values()を反復処理することをおすすめします。

<ui:repeat value="#{MyEnum.values()}" var="value"> 
    Map value: #{value} <br/> 
</ui:repeat> 
+0

ありがとう!それはたくさん説明します。 – Tony

+0

ようこそ。 – BalusC

関連する問題