E no meu bean eu preciso salvar selectedDinamicRoadmap e fiz assim:
privateMap<Integer,List<Integer>>selectedDinamicRoadmap=newHashMap<>();//gets and setspublicvoidsave(){for(Entry<Integer,List<Integer>>ee:selectedDinamicRoadmap.entrySet()){Integerkey=ee.getKey();List<Integer>values=ee.getValue();/* Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List */for(Stringid:values){//saveData}}}//orselectedDinamicRoadmap.entrySet().forEach(entry->{/* java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.Collection */Integerkey=entry.getKey();Logger2debug.d("Key: {}",key.toString());List<Integer>items=newArrayList<Integer>();items.addAll(entry.getValue());items.forEach(item->{Logger2debug.d(" Value: {}",item.toString());});});
Alguém sabe como resolvo isso? Qual seria e melhor maneira de resolver essa situação
Eu tentei várias soluções do Stackoverflow e acho q estou deixando passar algo muito besta para resolver esse problema.
Fala maninho, Tirei um print com o value da variável.
O que será que posso fazer para receber esse valor corretamente?
S
staroski
Os value de sua Entry não é um List, é um array.
É muito importante entender a diferença entre uma implementação de List e um array.
Você pode fazer seu laço assim:
Olá staroski,
Agora estou recebendo o seguinte erro: Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
Usando essa forma que vc sugeriu, tenho essa imagem com os valores da variavel:
Ja tentei até usar (Integer[] values = ee.getValue().clone() mas o erro persiste.
Alguma outra ideia?
S
Solucao aceita
staroski1 like
Não faz o menor sentido usar clone(), isso serve só pra criar uma cópia rasa de seu objeto.
Pelo jeito você está populando seu selectedDinamicRoadmap com Object[] e não com Integer[].
Ou você popula ele com o que realmente precisa, ou itera dessa forma:
Fala maninho, bom dia.
Com o Object[] funcionou. só não entendi o motivo do p:selectCheckboxMenu com ui:repeat, ele só aceita Object[] para retirar os dados dele.
Mas ótimo que está funcionando. Valeu.
S
staroski
Não é que ele só aceita Object[], é que o seu selectedDinamicRoadmap foi preenchido com Objetc[], de uma olhada no código onde você insere itens nesse selectedDinamicRoadmap.
Essa é a melhor forma de fazer isso? value="#{bean.selectedDinamicRoadmap[q.id]}"?
S
staroski
Nesse código ali não dá pra saber o tipo de dado do selectedDinamicRoadmap, só dá pra ver que você acessa o indice do array na posição q.id.
Mostra o fonte do seu Bean, que tipo de dado é o selectedDinamicRoadmap?
R
Rodrigo_Ramos1
Inicialmente coloquei como mostrado acima e estava recebendo o erro de conversão
/* Caused by: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List */
Só consegui fazer funcionar declarando a variavel como a seguir:
private Map<Integer, Object[]> selectedDinamicRoadmap = new HashMap<>();