[ Resolvido ] Cast de Long Para String

[quote=nel]Só se a sua lista estiver mesclando o tipo da chave do map.
Mas mesmo assim era para gerar outra exceção. Tente alterar a chave do map para Object ao inves de String, por curiosidade

E isso: itSrcMap.get(String.valueOf(getKey())))

deveria funcionar perfeitamente.
Tem certeza que está correto o tipo do Map na sua lista? :)[/quote]

Cara, o erro NÃO é nesta linha: itSrcMap.get(getKey())), ela funciona perfeitamente, NÃO TEM ERRO NESTA LINHA!!

O ERRO DE CAST É NESTA LINHA:


.append(itSrcMap.get(namePk))

E eu alterei o tipo da Key para Object, porém nenhum mudança, na execução e nem na msg de erro…

E o erro completo é:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
	at br.com.virtuem.projurisweb.util.apresentacao.tags.TagPropertyGridExt.createCmpHiddenToIds(TagPropertyGridExt.java:162)
	at br.com.virtuem.projurisweb.util.apresentacao.tags.TagPropertyGridExt.createComponent(TagPropertyGridExt.java:60)
	at br.com.virtuem.projurisweb.util.apresentacao.tags.TagComponentExt.doStartTag(TagComponentExt.java:1686)
	at org.apache.jsp.editar_jsp._jspx_meth_p_005fpropertygrid_005f0(editar_jsp.java:3015)
	at org.apache.jsp.editar_jsp._jspx_meth_c_005fwhen_005f37(editar_jsp.java:2960)
	at org.apache.jsp.editar_jsp._jspService(editar_jsp.java:434)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
	at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1063)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:801)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.virtuem.projurisweb.util.GenericFilter.doFilter(GenericFilter.java:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)

Por que teu List não tem o tipo List<HashMap<String, String>>?

Você tem certeza que aí dentro só tem maps de String para String?
Caso contrário, vai dar erro mesmo.

O seu código do append está correto. E quando a coisa está certa demais, é porque o erro não está aí, mas num lugar menos óbvio.

Eu desconfiaria disso aqui:

List itensSrc = null;  

E revisaria a carga que está sendo feita aqui:

itensSrc = serv.lista(voServ, user);  

Lembrando que Generics não são verificados, pois existe type erasure. Então, um cast do estilo que você está fazendo irá gerar um map inválido, que levantará exception apenas durante seu primeiro uso, e não no momento da conversão (é estranho, eu sei). Um Map<Long, String> jamais vira um Map<String, String>, nem com cast.

Resolvido. Obrigado pela atenção, eu altereio o tipos do casto do item da lista para o itSrcMap …, coloquei Object para o (Cast) ao invés de String, String, assim ele irá aceitar qqr tipo de dados (me corrijam se estiver errado) …


HashMap<Object, Object> itSrcMap = (HashMap<Object, Object>) itSrc.get(i);

OBRIGADO PELA ATENÇÃO E PACIÊNCIA DE TODOS.

SUCESSO!!!

[]'s