2013-06-17 7 views
6

バッキングビーンでは、Map<Integer,String>プロパティを定義しました。 ELからxhtmlファイル内のマップにアクセスしようとすると、何も返されません。JSFの整数キーを使用したアクセスマップEL

<h:outputLabel value="#{bean.myMap[0]}"> 

は、0キーの値を返しません。

+0

あなたは 'omnifaces'使用する必要があります:のhttp://showcase.omnifacesをその後、私は単純にされているだろうあなたのケースで何をした

package my.bean.tool; import javax.faces.bean.ManagedBean; import javax.faces.bean.ApplicationScoped; @ManagedBean @ApplicationScoped public class Caster { public Caster() { } public int toInt(long l) { return (int) l; } } 

を。 org/ –

+0

ここではomnifacesのどのコンポーネントを使用できますか? –

+0

[JSTLのキーによるマップ値へのアクセス]の可能な複製(http://stackoverflow.com/questions/924451/jstl-access-a-map-value-by-key) –

答えて

6

ELはlongタイプとしてあなたのリテラル数0を解釈します(すべてではないインデックスが値を持っている)それはList<String>で動作しますが、私は地図がまばらな配列のいくつかの種類を持っていると思います。 Map<Integer,String>の代わりにMap<Long,String>を試してください。

これは、あなたがおそらく何をしているかである。

myMap.put(Integer.valueOf(0), "SomeValue"); 

をこれは、ELは値を取り戻すために何をするかです:

String value = myMap.get(Long.valueOf(0)); 
1

私は同じ問題を抱えていたし、私がグーグルたとき、これを見つけました解決策。マップを変更するということは、自動生成されたコードなので、私の選択肢ではありませんでした。

私は管理Beanを作成しました:

<h:outputLabel value="#{bean.myMap.get(caster.toInt(0))}"> 
関連する問題