Boa tarde galera guj.
Estou precisando pegar o valor da linha quando eu clico em qualquer lugar na linha da tabela. Eu utilizo rich:datatable e eu popula minha table com um List e um ListDataModel que recebe essa lista de Departamentos. Se eu crio uma coluna com um commandLink e no meu bean eu faço um cast eu consigo disparar o metodo do bean e pegar o valor, por exemplo:
Departamento dp = (Departamento)dataModel.getRowData();
Mas, eu nao posso criar uma coluna com comandlink nessa tela. Eu preciso é clicar na linha e disparar o metodo que tem o codigo acima com a linha selecionada.
OBS.: eu tentei utilizar o <a4j:support action="#{pesquisaDepartment.selectItem}" event=“onclick”/>, mas nao deu certo.
Se alguem puder me ajudar, agradeço desde ja.
Caso nao seja assim, responda como vc carregando seu objeto e se pelo menos chama o metodo.
at+
F
fernandosc
Cara seguinte…
Voce ta populando sua table com um ListDataModel(List list)??
Estou usando um List segue o codigo:
public List<Usuario> listarTodosUsuarios(){
UsuarioFacade usuarioService = new UsuarioFacadeImp();
this.listaUsuario = usuarioService.listarTodosUsuarios();
return this.listaUsuario;
}
Quando vc clica na linha, pelo menos chama o metodo?
Não =/
francis.junio
Vei faz o seguinte…
Vamos ver se pelo menos o metodo chama…
Ah, a tabela ta sendo popula ne?!
troca os eventos
<a4j:supportevent="onRowClick"action="#{usuarioMB.pegarUsuario}"/>//NO SEU BEAN VC FAZ ASSIMpublicvoidpegarUsuario(){System.out.println(usuario.getNome());}
Caso vc precise que seja no ActionListener, troque o evento do bean de ActionListener para ActionEvent.
Testa ai e me fala…
F
fernandosc
Cara obrigado pela ajuda.
Ele nem está entrando no método.
Você falou que ele tem que ser um ListDataModel(List list), porque a minha lista é um List normal, e ele esta populando os campos do dataTable.
Segue o código completo:
Usuariousuario=newUsuario();List<Usuario>listaUsuario=newArrayList<Usuario>();publicUsuarioMB(){}publicList<Usuario>listarTodosUsuarios(){UsuarioFacadeusuarioService=newUsuarioFacadeImp();this.listaUsuario=usuarioService.listarTodosUsuarios();returnthis.listaUsuario;}publicvoidpegarUsuario(){System.out.println(usuario.getNome());}/*Get e Set*/
te passar um exemplo aki rapidao que vc vai conseguir fazer…marcai
francis.junio
//ISSO SERA SEU BEAM... ESSE dt é quem vai popular sua table na tela...privateDataModeldt;privateList<Usuario>list;publicList<InterfaceFailure>getList(){if(list==null)list=newArrayList<Usuario>();returnlist;}publicDataModelgetDt(){dt=newListDataModel(list);returndt;}publicvoidlistarTodosUsuarios(){UsuarioFacadeusuarioService=newUsuarioFacadeImp();this.list=usuarioService.listarTodosUsuarios();returnthis.listaUsuario;}publicvoidpegarUsuario(){Usuariouser=(Usuario)dt.getRowData();}
SEVERE: Error Rendering View[/listar/listarEvento.xhtml]
java.io.NotSerializableException: javax.faces.model.ListDataModel
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1509)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1474)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at java.util.HashMap.writeObject(HashMap.java:1000)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:945)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1338)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1146)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:244)
at javax.faces.render.ResponseStateManager.writeState(ResponseStateManager.java:155)
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:294)
at org.ajax4jsf.application.AjaxStateManager.writeState(AjaxStateManager.java:256)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:620)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.netcontrol.filtro.AuthFilter.doFilter(AuthFilter.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
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:128)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
francis.junio
Velho… verifica se seus Imports sao do pacote javax. Utilize somente os imports desse pacote.
Aki no meu sistema, nao tive problemas nenhum.
qq coisa, posta ai.
vlw
M
mrbbm
Você poderia checar se é necessário ou não serializar a classe!
Adiciona um implements serializable nela… testa aí!
francis.junio
Velho… Creio que nao seja isso pq eu nao precisei fazer isso aki… Mas, nao custa fazer o teste…