Galera,
eu to tentando criar um ManagedBean genérico com primefaces. Bom, a dúvida é o seguinte…
eu tenho a classe genérica:
public abstract class AbastractController<T, PK extends Serializable> {
e dentro dela eu tenho os seguintes atributos (preciso mostrar para demonstrar minha necessidade):
private BaseService<T, PK> baseService;
private LazyDataModel<T> lazyModel;
Esse atributo lazyDataModel é coisa do Primefaces para fazer filtros e paginação 
Ai eu quero fazer uma “Implementação” genérica dessa classe também… Então, quando eu vou instânciá-la
(no construtor) eu faço:
this.lazyModel = new LazyDataModel<T>() {
@Override
public List<T> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
//code HERE
}
Só que onde eu tenho “//code HERE” eu preciso acessar o BaseService que é um atributo da classe externa.
Como eu faço isso? Ja tentei:
//nada
AbstractController.instance.baseService
//nada2
AbstractController<T>.instance.baseService
//nada3
AbstractController<T,PK>.instance.baseService
Galera, alguma sugestão?
A variável baseService precisa ser final
Camarada…
Eu não estou vendo erro algum.
Cara, da erro em tempo de projeto!!

primeiro não acha AbstractController
depois da syntax error no instance 
Pois é, mas cada erro possui uma mensagem específica.
Sem saber qual a mensagem, fica difícil.
Mas, boa sorte aí.
Faço mais ou menos o que vc quer assim:
https://github.com/lsjunior/rockframework/blob/master/rockframework-faces/src/main/java/br/net/woodstock/rockframework/web/faces/primefaces/EntityDataModel.java
https://github.com/lsjunior/rockframework/blob/master/rockframework-faces/src/main/java/br/net/woodstock/rockframework/web/faces/primefaces/EntityRepository.java
[code]@Named(“usuarioBean”)
@ConversationScoped
public class UsuarioBean extends SCPBean {
…
private EntityDataModel usuarios;
@EJB
private UsuarioService usuarioService;
…
public String pesquisar() {
EntityRepository repository = new EntityRepository() {
@Override
public QueryResult getResult(final Page page) {
return UsuarioBean.this.getUsuarioService().pesquisarPorNome(UsuarioBean.this.getNomeFiltro(), page);
}
@Override
public Object getEntity(final Object id) {
return UsuarioBean.this.getUsuarioService().recuperarPorId((Integer) id);
}
};
this.usuarios = new EntityDataModel<Usuario>(ConfigBean.QTD_REGISTROS_TABELA, repository);
return null;
}
}[/code]
Eu não sei como que o componente LazyLoading se comporta perante o model…
Eu estou tentando criar um Controller genérico. Para isso quero criar o seu LazyModel
genérico também…
vc já viu alguma implementação genérica de um MB?
vlw
ManagedBean genérico? Conte-me mais sobre os benefícios disto.
Considerando, entretanto, que cada página pode ter uma estrutura específica, uma vez que você não deve pensar apenas no crud básico, pois, caso pensasse, não deveria pensar em um MB genérico, mas, em criar um MB “pai” que fosse estendido pelos demais MBs com os métodos básicos (insere, exclui, altera, pesquisa um, pesquisa vários e os que mais você achar que devem ser genéricos) e, então, para os demais, aqueles que são específicos, colocar em cada MB específico.
[quote=drsmachado]ManagedBean genérico? Conte-me mais sobre os benefícios disto.
Considerando, entretanto, que cada página pode ter uma estrutura específica, uma vez que você não deve pensar apenas no crud básico, pois, caso pensasse, não deveria pensar em um MB genérico, mas, em criar um MB “pai” que fosse estendido pelos demais MBs com os métodos básicos (insere, exclui, altera, pesquisa um, pesquisa vários e os que mais você achar que devem ser genéricos) e, então, para os demais, aqueles que são específicos, colocar em cada MB específico.[/quote]
Sim, trata-se de uma classe abstrata genérica…