[Resolvido]Armazenando objeto na sessao [jsf]
Pessoal
Tenho um objeto do tipo "requisicao" (uma classe do sistema).
Como posso armazenar esse objeto na sessao ?
Obrigado
Tiago Magalhães
Curtidas 0
Respostas
Douglas Eric
18/12/2012
crie um ManagedBean que é iniciado junto com a pagina inicial;
Coloque nele a anotação
Qualquer bean que seja "SessionScoped" tem seu "tempo de vida" igual até que a sessão expire (timeout ou o usuario fechar a página)
Então qualquer coisa nesse bean pode ser acessado de qualquer pagina e sempre vai ser o mesmo objeto.
Só tome cuidado para iniciar o objeto apenas uma vez, ou ele vai sobreescrever por um vazio sempre que chamar.
@SessionScoped
GOSTEI 0
Thiago Palmeira
18/12/2012
Importante também de fazer o registro desse bean no arquivo faces-config.xml e registrar o scope do tipo "session".
GOSTEI 0
Tiago Magalhães
18/12/2012
[quote="sekkuar"]crie um ManagedBean que é iniciado junto com a pagina inicial;
Coloque nele a anotação
Qualquer bean que seja "SessionScoped" tem seu "tempo de vida" igual até que a sessão expire (timeout ou o usuario fechar a página)
Então qualquer coisa nesse bean pode ser acessado de qualquer pagina e sempre vai ser o mesmo objeto.
Só tome cuidado para iniciar o objeto apenas uma vez, ou ele vai sobreescrever por um vazio sempre que chamar.
Entendi tudo o q vc flw, mas veja bem minha situacao.
Primeiro vou colar meu metodo salvar aqui e depois te explicar a minha necessidade...
@SessionScoped
public String salvar() {
ContextoBean contextoBean = ContextoUtil.getContextoBean();
FacesContext context = FacesContext.getCurrentInstance();
UsuarioRN usuarioRN = new UsuarioRN();
RequisicaoRN requisicaoRN = new RequisicaoRN();
ItemRN itemRN = new ItemRN();
ItemRequisicaoRN itemRequisicaoRN = new ItemRequisicaoRN();
StatusRN statusRN = new StatusRN();
ItemRequisicao itemRequisicao = new ItemRequisicao();
/*
* Salvando na tabela requisicao
*/
//pega objeto usuario (usuarioLogado)
Usuario usuarioLogado= usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin()); //getUsuarioLogado
System.out.println("objeto usuario: " + usuarioLogado);
requisicao.setUsuario(usuarioLogado);
//Nova requisicao -> codigoStatus sempre = 1
codigoPendente = "pendente";
Status codigoStatus = statusRN.buscarPorNome(getCodigoPendente());
System.out.println(getCodigoPendente());
requisicao.setStatus(codigoStatus);
//GetDatahora do computador do cliente
Locale locale = new Locale("pt","BR");
GregorianCalendar calendar = new GregorianCalendar();
SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'",locale);
String df = formatador.format(calendar.getTime());
System.out.println(formatador.format(calendar.getTime()));
requisicao.setDataHora(df);
requisicaoRN.salvar(requisicao);
/*
* Salvando na tabela item_x_requisicao
*/
//pega objeto item (item selecionado)
Item itemSelecionado= itemRN.buscarItem(itemBean.getItemm());
System.out.println(itemSelecionado);
itemRequisicao.setItem(itemSelecionado);
// Pega codigo da requisicao
Requisicao codigoRequisicaoAtual = requisicaoRN.buscarCodigoPendente(requisicao.getCodigo());
System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);
itemRequisicao.setRequisicao(codigoRequisicaoAtual);
//Pega quantidade solicitada (pagina)
itemRequisicao.setQuantidadeSolicitada(qntSoli);
//Save
itemRequisicaoRN.salvar(itemRequisicao);
return "this.destinoSalvar";
}
if(objetoRequisicaoArmazenadoNaSessao ==null){
Item itemSelecionado= itemRN.buscarItem(itemBean.getItemm());
System.out.println(itemSelecionado);
itemRequisicao.setItem(itemSelecionado);
// Pega codigo da requisicao
Requisicao codigoRequisicaoAtual = requisicaoRN.buscarCodigoPendente(requisicao.getCodigo());
System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);
itemRequisicao.setRequisicao(codigoRequisicaoAtual);
//Pega quantidade solicitada (pagina)
itemRequisicao.setQuantidadeSolicitada(qntSoli);
//Save
itemRequisicaoRN.salvar(itemRequisicao);
...
}
else{
//pega objeto item (item selecionado)
Item itemSelecionado= itemRN.buscarItem(itemBean.getItemm());
System.out.println(itemSelecionado);
itemRequisicao.setItem(itemSelecionado);
System.out.println("Codigo requisicao:" +codigoRequisicaoAtual);
temRequisicao.setRequisicao(objetoRequisicaoArmazenadoNaSessao);
//Pega quantidade solicitada (pagina)
itemRequisicao.setQuantidadeSolicitada(qntSoli);
//Save
itemRequisicaoRN.salvar(itemRequisicao);
}
GOSTEI 0
Tiago Magalhães
18/12/2012
[quote="thiagovpalmeir"]Importante também de fazer o registro desse bean no arquivo faces-config.xml e registrar o scope do tipo "session".
certo...
Vc viu meu post anterior ? qual eh o melhor jeito de fazer o q eu quero ?
Se tiver alguma ideia, posta ai.
Obrigado :cool:
GOSTEI 0
Davi Costa
18/12/2012
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = context.getExternalContext().getSession(false);
// ai é só jogar o atributo na sessão e recuperá-lo quando quiser.
//métodos auxiliares que podem te ajudar:
public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
public HttpSession getSession() {
return (HttpSession) getFacesContext().getExternalContext().getSession(false);
}
public HttpServletRequest getRequestSession() {
return (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
}
GOSTEI 0
Davi Costa
18/12/2012
[quote="davi.costa"]
Espero ter ajudado
abcs
Criei a classe certinho mas tive q add cast to HttpSession ! Ficou assim:
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = context.getExternalContext().getSession(false);
// ai é só jogar o atributo na sessão e recuperá-lo quando quiser.
//métodos auxiliares que podem te ajudar:
public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
public HttpSession getSession() {
return (HttpSession) getFacesContext().getExternalContext().getSession(false);
}
public HttpServletRequest getRequestSession() {
return (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
}
HttpSession session =(HttpSession)context.getExternalContext().getSession(false);
GOSTEI 0
Davi Costa
18/12/2012
Pessoal
N to conseguindo armazenar um objeto na sessao... Ele sempre retorna como nulo.
Quando eu vou tentar recuperar ele:
O q ta errado ?
...
requisicaoRN.salvar(requisicao);
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("ObjetoRequisicaoSessao", requisicao);
...
requisicao = (Requisicao)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("ObjetoRequisicaoSessao");
System.out.println(ObjetoRequisicaoSessao);
GOSTEI 0
Davi Costa
18/12/2012
HttpSession session =(HttpSession)context.getExternalContext().getSession(false);
session.setAttribute("ObjetoRequisicaoSessao", requisicao);
//para recuperar
session.getAttribute("ObjetoRequisicaoSessao");
GOSTEI 0
Tiago Magalhães
18/12/2012
[quote="davi.costa"]
abcs
Entendi... Fiz exatamente como vc flw mas ainda ta retornando nulo!
HttpSession session =(HttpSession)context.getExternalContext().getSession(false);
session.setAttribute("ObjetoRequisicaoSessao", requisicao);
//para recuperar
session.getAttribute("ObjetoRequisicaoSessao");
public String salvar() {
HttpSession session = (HttpSession)context.getExternalContext().getSession(false);
...
requisicaoRN.salvar(requisicao);
session.setAttribute("ObjetoRequisicaoSessao", requisicao);
System.out.println("1"+ ObjetoRequisicaoSessao);
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
@ManagedBean(name = "sessaoBean")
@SessionScoped
public class SessaoBean {
FacesContext context = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
//métodos auxiliares que podem te ajudar:
public FacesContext getFacesContext() {
return FacesContext.getCurrentInstance();
}
public HttpSession getSession() {
return (HttpSession) getFacesContext().getExternalContext().getSession(false);
}
public HttpServletRequest getRequestSession() {
return (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
}
}
GOSTEI 0
Davi Costa
18/12/2012
Opa
Vacilei... Agora eu vi o objeto...
Muito obrigado pela ajuda... Sem vcs eu estaria perdido, rsrs !
Abracaoo
requisicaoRN.salvar(requisicao);
session.setAttribute("ObjetoRequisicaoSessao", requisicao); System.out.println(session.getAttribute("ObjetoRequisicaoSessao"));
GOSTEI 0
Davi Costa
18/12/2012
Valeu parceiro, sucesso!
Assim que possível marca o post como resolvido.
abcs
GOSTEI 0