2013-06-17 13 views
6

W zapleczu zdefiniowałem właściwość Map<Integer,String>. Kiedy próbuję uzyskać dostęp do mapy z EL w pliku xhtml, nic nie otrzymuję.Mapa dostępu z kluczem całkowitoliczbowym z JSF EL

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

nie zwraca wartości dla klucza 0. Za pomocą klawisza String działa.

Działa z List<String>, ale chcę Mapa mieć jakąś rzadką Array (nie wszystkie indeksy mają wartości)

+0

należy użyć 'omnifaces' http: //showcase.omnifaces. org/ –

+0

@RongNK który składnik omnifaces miałby tutaj zastosowanie? –

+0

możliwy duplikat [JSTL dostęp do wartości mapy według klucza] (http://stackoverflow.com/questions/924451/jstl-access-a-map-value-by-key) –

Odpowiedz

6

EL interpretuje swój numer dosłownego 0 jak long typu. Wypróbuj Map<Long,String> zamiast Map<Integer,String>.

To jest to, czego rzekomo robi:

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

To co EL ma wrócić wartość:

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

miałem ten sam problem i okazało się to, kiedy googlowania dla rozwiązanie. Zmiana mapy nie była dla mnie opcją, ponieważ był to kod wygenerowany automatycznie, więc oto, co zrobiłem.

stworzyłem zarządzanego Fasola:

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; 
    } 
} 

Potem po prostu zrobił to, co w danym przypadku byłby:

<h:outputLabel value="#{bean.myMap.get(caster.toInt(0))}"> 
Powiązane problemy