Dúvida com JSF

8 respostas
L

Opa,

To lendo sobre JSF, li alguns tutoriais básicos, funcionou belezinha… porém nos materiais que eu li, ele usa apenas uma classe como managed-bean e nessa classe tem o Bean e métodos… e eu queria separar isso, tipo ter o Bean Usuario e o dao UsuarioDao, e até mesmo uma classe action que chama o dao que chama o bean

Um exemplo bem simples:

package br.com.leonardo.sistemas.site.model;

public class Usuario {
	
	private String nome;
	private int telefone;
	
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getTelefone() {
		return telefone;
	}
	public void setTelefone(int telefone) {
		this.telefone = telefone;
	}
}
package br.com.leonardo.sistemas.site.dao;

import br.com.leonardo.sistemas.site.model.Usuario;

public class UsuarioDao {
	
	Usuario usuario;
	
	public String inserir() {
		
		//Aqui eu não sei como proceder
		//não sei se devo instanciar o objeto na mão
		//ou ele faz sozinho??
		System.out.println(usuario.getNome() + " - " + usuario.getTelefone());
		
		return "sucess";
	}
}

Porém como configurar isso no faces-config.xml, para que ele pegue o uma classe Dao que tem um objeto bean nela e fazer tudo automatico?

8 Respostas

V

Bom… vamos lá…

Você pode usar o padrão MVC… Na sua classe Controller (ou DAO, como preferir) você realiza todas as operações pertinentes à persistência dos dados (Selects, Inserts, Updates, Deletes e etc…)

Essa classe DAO teria um objeto do tipo “Usuario” (seguindo seu exemplo)…

No faces-config, vc mapearia apenas a DAO, pois ela já conhece a classe Usuario…

Neste caso, o teu JSP precisa conhecer apenas a classe DAO. Ou seja, quando você for usar o atributo “telefone”, por exemplo, você usaria da seguinte forma:

#{seuDao.Usuario.telefone}

Espero ter ajudado

antoniopopete

O faces-config você deve mapear apenas os faces.
O DAO, seria instanciado dentro do faces ou por uma factory ou de forma direta e você utilizaria ele normalmente.
O model ou dto seria um atributo privado do managed bean com get/set.
E para acessar o valor é fazer o que o colega citou
#{managedBean.model.propriedade}

L

Hummmm…

Mas tipo no meu Dao, eu tenho que instanciar o objeto Usuario ? “Usuario usuario = new Usuario()” ou ele jah faz isso?

E qual seria o ideal, ter um controller que acesse o dao e o jsp conhecer apenas esse controller?

L

antoniopopete:
O faces-config você deve mapear apenas os faces.
O DAO, seria instanciado dentro do faces ou por uma factory ou de forma direta e você utilizaria ele normalmente.
O model ou dto seria um atributo privado do managed bean com get/set.
E para acessar o valor é fazer o que o colega citou
#{managedBean.model.propriedade}

Ahhh então o que eu digo controller seriam faces… e essas faces que instanciam os daos e etc… tendi…

V

Exatamente isso…

É bom ter um objeto do tipo “Usuario” somente quando você for trabalhar com transactions… ou seja, insert, delete e update… caso você vá trabalhar apenas com select e exibição de dados na tela, isso não é necessário, afinal de contas, você pode usar o “Select new” do Hibernate…

Giulliano

vtr.oliveira:
Bom… vamos lá…

Você pode usar o padrão MVC… Na sua classe Controller (ou DAO, como preferir) você realiza todas as operações pertinentes à persistência dos dados (Selects, Inserts, Updates, Deletes e etc…)

Essa classe DAO teria um objeto do tipo “Usuario” (seguindo seu exemplo)…

No faces-config, vc mapearia apenas a DAO, pois ela já conhece a classe Usuario…

Neste caso, o teu JSP precisa conhecer apenas a classe DAO. Ou seja, quando você for usar o atributo “telefone”, por exemplo, você usaria da seguinte forma:

#{seuDao.Usuario.telefone}

Espero ter ajudado

Cara não sei qual é o seu nível de conhecimento, mas essa foi a maior besteira que já li sobre MVC. Talvez por vc não conhecer, mas vamos lá.

DAO e CONTROLLER -> São coisas TOTALMENTE distintas. DAO é um pattern da (SUN EE Patterns) que diz respeito a melhores práticas de acessar dados de um BD (por exemplo).

Controller é quem recebe requisições e delega para uma servlet especifica ou uma classe MODEL.

No caso de JSF não existe servlets pq isso foi abstraído no framework. Você só precisa criar uma ManagedBean/HandlerBean e mapea-lo no faces.config.

ManagedBean/HandlerBean = nomenclaturas. Isso são apenas classes normais com métodos e atributos como qq outra classe com a diferença que deve possuir gets e sets e estar no faces config.

V

OK cara, obrigado pelas informações…

Pois é, vivendo e aprendendo ^^

Mas não precisa ficar nervoso, nem todos nascem sabendo ou sabem tanto quanto o senhor

Obrigado

Giulliano

vtr.oliveira:
OK cara, obrigado pelas informações…

Pois é, vivendo e aprendendo ^^

Mas não precisa ficar nervoso, nem todos nascem sabendo ou sabem tanto quanto o senhor

Obrigado

Não estou nervoso vtr.oliveira. As vezes o modo como vc interpreta um texto dá a impressão errada. Quando digo que isso foi a maior besteira é pq foi mesmo e eu acho isso engraçado. Por isso respondi o tópico para que vc entenda a diferença e não comece com o pé errado. Poucos aqui no forúm são pessoas mal educadas. Não se assuste quando perguntar alguma coisa q alguém vier com os dois pés no peito. e normal cara, alguns ajudam outros atrapalham. valews…

[’]s

Criado 15 de abril de 2008
Ultima resposta 15 de abr. de 2008
Respostas 8
Participantes 4