Colegas estou com a seguinte situação: Ao clicar no p:commandButton, para salvar um registro, executo um método no bean que verifica se o usuário esta logado, caso não esteja logado chamo a pagina de login. Após logar gostaria de que método continuasse o processo e salvasse o registro. O método login é genérico, que serve para várias outras paginas, por isso eu não poderia colocar o método de salvar dentro do método de login. E algumas páginas podem ser vistas sem login, por isso não exijo login ao entrar no sistema.
Estou usando o JSF 2.2 + Hibernate 4.3.1 + Primefaces.
Infocurso.xhtml:
<p:commandButton value=“Increver-se” actionListener="#cntrCurso.testalogado(cntrCurso.curso.id)}" icon=“ui-icon-closethick” />
Bean:
public void testalogado(int idcurso){
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
Boolean conectado = (Boolean) session.getAttribute(“autenticado”);
cntrUsuario.pagina= FacesContext.getCurrentInstance().getViewRoot().getViewId().replace("/","");
if (conectado == null || !conectado) {
try {
FacesContext.getCurrentInstance().getExternalContext().redirect(“login.xhtml”);
} catch (IOException ex) {
Logger.getLogger(CntrCurso.class.getName()).log(Level.SEVERE, null, ex);
}
}
inscreverCurso(idcurso);
}
public String inscreverCurso(int idcurso){
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
idaluno = (int) session.getAttribute(“idusuario”);
inscritocurso = new Inscritoscurso();
inscritocurso.setIdaluno(idaluno);
inscritocurso.setIdcurso(idcurso);
dao.incluirInscricao(inscritocurso);
return “pag-sucesso”;
}
na pagina de login.xhtml eu tenho o metodo testausuario()
public void testausuario(){
dao = new PessoaDAO();
List lista;
lista = dao.testausuario(usuario,senha);
if (lista.size()==1) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, “Usuario Logado”, null));
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession httpSession = (HttpSession) facesContext.getExternalContext().getSession(true);
httpSession.setAttribute(“autenticado”, true);
httpSession.setAttribute(“usuario”, usuario);
httpSession.setAttribute(“idusuario”, lista.get(0).getId());
try {
FacesContext.getCurrentInstance().getExternalContext().redirect(this.getPagina());
} catch (IOException ex) {
Logger.getLogger(cntrUsuario.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, “Apelido ou Senha inválidos”, null));
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession httpSession = (HttpSession) facesContext.getExternalContext().getSession(true);
httpSession.setAttribute(“autenticado”, false);
}
}
Agradeço qualquer informação. Obrigado