Fazendo Cast em JSF 2

9 respostas
R

Bom, tenho uma classe Controller Abstrata que implementa os CRUD’s : criar, alterar, excluir, findAll, findById.

Como ela é abstrata e não sei qual JavaBean utilizará ela, eu optei por sempre trabalhar com OBJECT ( o tipo mais genérico), ou seja, quando for chamar a action “findById” ele retorna um Object, e quando chamar o findAll retrona uma lista de Objects.

Lá no JSF 2 eu sei que devo fazer: {pessoaController.findById.nome}

Porém o findById retorna um Object e não um “Pessoa”, tem como fazer um cast tipo: {((Pessoa)pessoaController.findByid).nome} ?

9 Respostas

drsmachado

Mas você está usando um ManagedBean genérico?
Eu estenderia o abstrato em quantos beans fossem necessários, para ter os dados o mais limpo possível nas xhtmls.
Assim, independente de ter um Object retornado do método da superclasse, teria uma subclasse especialista para disponibilizar a informação para a view.

R

Sim, estou utilizando uma Classe Genérica que fará o CRUD e todos os actions padrões, para não ter que ficar implementando milhares de linhas de códigos iguais.

Bom, se eu estender a action “cadastrar” do ManageBean genérico apenas para retornar um tipo especifico, não tem muita lógica eu criar esse ManageBean Genérico.

Exemplo:

ManageBean Genérico

public abstract class BasicManageBean
{

   Object beanInstance;

  //Injetado via Spring
   BasicDAO dao;

   public Object getObject(){
        return Object;
   }

   public void setObject(Object beanInstance){
     this.beanInstance = beanInstance;
  }

  public List getListar(){
     return dao.list();
  }
   
}

ManageBean Pessoa

public class PessoaManageBean extends BasicManageBean
{
  
  //Aqui não terá nada porque  está tudo pronto. 
   
}

No spring eu injeto o Dao do PessoaDAOImpl no PessoaManagedBean

R

Resolvido já , pode fechar esse tópico rsrs

Daniel_T_S

Como você resolveu?

com a dica do amigo drsmachado?

posta aí.

R

Na verdade eu resolvi adotando uma outra estratégia:

Criei um DAO Genérico que realiza o CRUD diretamente como o Hibernate. Depois criei uma interface BasicBO, e todos os meus outros BO (PessoaBOImpl, LivroBOImpl) implementam essa interface.

Daniel_T_S

Posta aí um exemplo estou curioso.

Valeu.

R

Assim que chegar em casa eu posto

Daniel_T_S

ok agurdo.

R

Amigo ainda não tive tempo de enviar o código fonte completo, mas lhe adianto que criei um DAO Genérico com modelo neste link: http://wehavescience.com/2013/02/24/criando-um-dao-generico-com-hibernate/

Siga-o e terá o mesmo resultado que eu.

Criado 19 de julho de 2013
Ultima resposta 22 de jul. de 2013
Respostas 9
Participantes 3