LazyDataModel do Primefaces, não me deixa injetar as dependencias do Spring
7 respostas
darksteel3000
Pessoal, estou com uma classe que estende de LazyDataModel para poder utilizar a paginação do Primefaces data table. Mas na classe do LazyDataModel, o meu @Autowired não funciona. A classe está anotada com o @Component.
publicclassParticipLazyListextendsLazyDataModel<Participante>{privatestaticfinallongserialVersionUID=1L;privateList<Participante>participantes;@InjectprivateUsuarioFaceuserLogado;@OverridepublicList<Participante>load(intidFirst,intidMax,Stringstring,SortOrderso,Map<String,String>filters){try{ParticipanteSessionbean=null;UsuarioFaceuserLogado=null;ParticipanteFaceparticipanteFace=null;try{bean=getFacadeWithJNDI(ParticipanteSession.class);userLogado=getFacadeWithJNDI(UsuarioFace.class);participanteFace=getFacadeWithJNDI(ParticipanteFace.class);}catch(NamingExceptionex){Logger.getLogger(ParticipLazyList.class.getName()).log(Level.SEVERE,null,ex);}participantes=bean.getParticipLazyByCodigo(idFirst,idMax,userLogado.getLoggedUser().getEmpresa().getId());if(getRowCount()<=0){setRowCount(bean.getCountParticipTot(userLogado.getLoggedUser().getEmpresa().getId()));}setPageSize(idMax);}catch(Exceptione){System.out.println("Erro ao paginar... Mensagem de erro: "+e.getMessage());}returnparticipantes;}@OverridepublicObjectgetRowKey(Participanteparticipante){returnparticipante.getId();}@OverridepublicParticipantegetRowData(StringparticipanteId){Integerid=Integer.valueOf(participanteId);for(Participanteparticipante:participantes){if(id.equals(participante.getId())){returnparticipante;}}returnnull;}public<T>TgetFacadeWithJNDI(Class<T>classToFind)throwsNamingException{BeanManagerbm=getBeanManager();Bean<T>bean=(Bean<T>)bm.getBeans(classToFind).iterator().next();CreationalContext<T>ctx=bm.createCreationalContext(bean);Tdao=(T)bm.getReference(bean,classToFind,ctx);returndao;}privateBeanManagergetBeanManager()throwsNamingException{try{InitialContextinitialContext=newInitialContext();return(BeanManager)initialContext.lookup("java:comp/BeanManager");}catch(NamingExceptione){e.printStackTrace();returnnull;}}}
darksteel3000
Vi a forma que você postou, mas infelizmente ela não se encaixa na minha arquitetura, teria q ou acrescentar ou trocar algumas coisas, e não é relevante.
d34d_d3v1l
Cara,
passei pelo mesmo problema que você…
E vou postar minha solução.
PS: eu fiz um BaseLazyModel que é genérico para todas as minhas entidades…
(Isso pq monto a query dinamicamente usando criteria hibernate)
Opa amigo. Nesse caso esse seu baseService esta sendo gerenciado pelo spring certo?
d34d_d3v1l
Sim.
O Spring manda em tudo aqui na minha aplicação
darksteel3000
Fiz exemplo que nem o seu. Mas encontrei o maldito, LazyInitializationException, pois carrego uma lista de objetos desses meus objetos.
Tem algum modo de contornar isso, fiz aqui com o Hibernate.initialize. Mas como meu metodo retorna uma lista, teria q fazer o foreach em cada objeto fazendo sua inicialização.
d34d_d3v1l
darksteel3000:
Fiz exemplo que nem o seu. Mas encontrei o maldito, LazyInitializationException, pois carrego uma lista de objetos desses meus objetos.
Tem algum modo de contornar isso, fiz aqui com o Hibernate.initialize. Mas como meu metodo retorna uma lista, teria q fazer o foreach em cada objeto fazendo sua inicialização.
então cara
sempre qndo vou carregar uma lista lazy eu faço assim ó: