Boa tarde galera, não sei se é possível o que estou querendo, mas vamos lá.
Eu faço a verificação de login do meu sistema via PhaseListener, minhas verificações são feitas dentro do método afterPhase(PhaseEvent event), e caso alguma verificação esteja incorreta, eu redireciono o usuário da seguinte forma:
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "loginPage");
Até aí tudo bem.
O que estou querendo fazer agora, é que terei uma condição dentro desse método que se for verdadeiro, eu quero que abra um alert(’’) (Javascript) na página do usuário sem tirar ele da página em que ele estiver.
Exemplo, ele está navegando normal pelo sistema, e de repente ele clica em um botão que vai para a próxima página, e a condição no PhaseListener é verdadeiro, eu quero que ele continue na mesma página (sem ir para a próxima página que o botão redireciona) e receba apenas o alert(’’).
É possível fazer isso?
Como?
Obrigado desde já! Abraço!
Complementando o tópico, segue meu atual PhaseListener.
Aproveitando, outra dúvida que eu tenho é, como que eu faço para identificar que uma sessão expirou (Igual ao do showcase do primefaces)? É só eu dar get na última visita comparando o tempo que já passou e o tempo da sessão? Ou existe uma forma mais sofisticada? (Gostaria de saber isso pois pretendo redirecionar para uma outra página especifica quando a sessão expirar)
[code]public class AuthorizationListener implements PhaseListener {
public void afterPhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
String currentPage = facesContext.getViewRoot().getViewId();
boolean isLoginPage = (currentPage.lastIndexOf("Login.xhtml") > -1);
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
Vendedor vendedor = (Vendedor) session.getAttribute("vendedorLogin");
Cliente cliente = (Cliente) session.getAttribute("clienteLogin");
if (vendedor != null) {
if (new VendedorDao().countVendedorLogin(vendedor) <= 0) {
session.setAttribute("vendedorLogin", null);
vendedor = null;
}
} else if (cliente != null) {
if (new ClienteDao().countClienteLogin(cliente) <= 0) {
session.setAttribute("clienteLogin", null);
cliente = null;
}
}
if (!isLoginPage && vendedor == null && cliente == null) {
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "loginPage");
} else if (isLoginPage && (vendedor != null || cliente != null)) {
NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
nh.handleNavigation(facesContext, null, "resumoPage");
}
}
public void beforePhase(PhaseEvent event) {
}
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}[/code]