Chamar metodo de um outro manageBean
Eu precio chamar um método chamado listaCidadePorEstado que fica no manageBean CidadeBean de dentro da um jsf que esta liago ao pessoaBean. Eu posso chamar este método listaCidadePorEstado dentro do managedBean pessoaBean, pois eu não consigo listar as cidade de um determinadi estado.
Jose Boas
Curtidas 0
Respostas
Davi Costa
18/10/2012
É possível sim.
Porém sabe que o jsf vai carregar todos os getters e setters e o construtor desse outro managedBean que vc quer usar, a performance vai cair bastante. Talvez não perceba ai na sua implementação pq é só vc usando o sistema, mas na prática mesmo (em produção) é uma péssima prática, a não ser que seu managedBean seja de sessão ai não vai regarregar tudo (porém só deixar seu bean de sessão por conta de usar em conjunto com outro é tb uma prática pior ainda, pois vai deixar muita sujeira na sessão perdendo mais ainda em performance).
att Davi
Porém sabe que o jsf vai carregar todos os getters e setters e o construtor desse outro managedBean que vc quer usar, a performance vai cair bastante. Talvez não perceba ai na sua implementação pq é só vc usando o sistema, mas na prática mesmo (em produção) é uma péssima prática, a não ser que seu managedBean seja de sessão ai não vai regarregar tudo (porém só deixar seu bean de sessão por conta de usar em conjunto com outro é tb uma prática pior ainda, pois vai deixar muita sujeira na sessão perdendo mais ainda em performance).
att Davi
GOSTEI 0
Nilton Bertoldo
18/10/2012
Acho que a solução pode ser essa:
JSF-2 "Injeção de dependências" @ManagedBean
• Nome: Injetar o valor de um bean em outro bean como atributo.
• Exemplo: Um usuário autentica-se, e mantem-se seu bean na sessão. Logo, o bean que controla os links acessados precisa do usuário e o link clicado para mostrar, como exemplo:
link : usuario
www.meusite.com.br/ir.jsf : douglas
www.meusite.com.br/voltar.jsf?id=30: paulo
• Contexto: Injetar os valores de atributos de um ManagedBean, através de outros Beans, usando JSF 2.0. Tenho dois beans:
- usuario a classe Usuario;
- controleLink a classe ControleLink.
Deve ser injetado o bean usuario no beancontroleLink como atributo.
• Problema: Na versão JSF 1.2, para resolver o valor de um bean usuario na classe que controla link(ControleLink), apreciava-se escrever algo do tipo:
...
usuario=FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario"))
...
• Solução: Para jsf 2.0 isso ficou mais fácil
Implementando as duas classe Usuario e ControleLink usando conceitos de JSF 2.0.
Import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="usuario")
@SessionScoped
public class Usuario {
private String nome;
private Boolean autenticado = false;
public Boolean autenticar(String nome, String senha) {
this.nome = nome;
return autenticado = (nome != null && senha != null);
}
public Boolean isAutenticado() {
return autenticado;
}
public String getNome() {
return nome;
}
}
---
package com.dood.web.mesa;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "controleLink")
@SessionScoped
public class ControleLink {
@ManagedProperty(value = "#")
private Usuario usuario;
public void clicou(String link) {
System.out.println(link + ":" + usuario.getNome());
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Usuario getUsuario() {
return usuario;
}
}
JSF-2 "Injeção de dependências" @ManagedBean
• Nome: Injetar o valor de um bean em outro bean como atributo.
• Exemplo: Um usuário autentica-se, e mantem-se seu bean na sessão. Logo, o bean que controla os links acessados precisa do usuário e o link clicado para mostrar, como exemplo:
link : usuario
www.meusite.com.br/ir.jsf : douglas
www.meusite.com.br/voltar.jsf?id=30: paulo
• Contexto: Injetar os valores de atributos de um ManagedBean, através de outros Beans, usando JSF 2.0. Tenho dois beans:
- usuario a classe Usuario;
- controleLink a classe ControleLink.
Deve ser injetado o bean usuario no beancontroleLink como atributo.
• Problema: Na versão JSF 1.2, para resolver o valor de um bean usuario na classe que controla link(ControleLink), apreciava-se escrever algo do tipo:
...
usuario=FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario"))
...
• Solução: Para jsf 2.0 isso ficou mais fácil
Implementando as duas classe Usuario e ControleLink usando conceitos de JSF 2.0.
Import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="usuario")
@SessionScoped
public class Usuario {
private String nome;
private Boolean autenticado = false;
public Boolean autenticar(String nome, String senha) {
this.nome = nome;
return autenticado = (nome != null && senha != null);
}
public Boolean isAutenticado() {
return autenticado;
}
public String getNome() {
return nome;
}
}
---
package com.dood.web.mesa;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "controleLink")
@SessionScoped
public class ControleLink {
@ManagedProperty(value = "#")
private Usuario usuario;
public void clicou(String link) {
System.out.println(link + ":" + usuario.getNome());
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public Usuario getUsuario() {
return usuario;
}
}
GOSTEI 0