Bom dia.
Estou com um problema ja a varios dias e preciso da ajuda de voces.
No meu filter eu uso
HttpServletResponse.sendRedirect(“componentes/login.jsp”);
O que ocorre:
esta página que estou chamando login.jsp, está abrindo dentro do frame que possui o botão que chama meu servlet.
Gostaria de abrir essa tela em uma nova página, alguém poderia me ajudar ??
Obrigado pela atenção.
private String timeoutPage = “componentes/login.jsp”;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException,ServletException {
if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
// is session expire control required for this request?
if (isSessionControlRequiredForThisResource(httpServletRequest)) {
// is session invalid?
if (isSessionInvalid(httpServletRequest)) {
String timeoutUrl = httpServletRequest.getContextPath() + "/" + getTimeoutPage();
System.out.println("Session is invalid! redirecting to timeoutpage : "+ timeoutUrl);
httpServletResponse.sendRedirect(timeoutUrl);
return;
}
}
}
filterChain.doFilter(request, response);
}
MUITO OBRIGADO
Para abrir na fora na página toda ao invés de abrir no frame você precisa usar o objeto window.parent do javascript
furutani
Valeu pela força, cara mas eu fiquei meio confuso, tipo assim a funçao javaScript tem a seguinte sintax:
window.parent.frames[num]
window.parent.frameName
Eu estou usando filter para fazer o redirecionamento, onde que eu vou implementar esta funcao, o meu filter esta programado no xml para executar em todo submit que o usuario der na tela.
filter>
SessionTimeoutFilter
br.com.inloc.sessao.SessionTimeoutFilter
<filter-mapping>
<filter-name>SessionTimeoutFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Em furutani eu so nao entendi mesmo onde utilizar a funçao javascript.
t++ thank you
uffffffff consegui fazer o redirecionamento perfeitamente…
ta ai todo meu codigo
MEU FACES CONFIG FICOU ASSIM:
/*
loginPage
forUserLogin.jsp
<lifecycle>
<phase-listener>br.com.inloc.sessao.AuthorizationListener</
phase-listener>
MEU PHASELISTENER FICOU ASSIM:
import br.com.inloc.controller.geral.UsuarioLoginController;
import br.com.inloc.estrutura.tool.ToolJsf;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
public class AuthorizationListener implements PhaseListener {
public void afterPhase(PhaseEvent event) {
FacesContext facesContext = event.getFacesContext();
String currentPage = facesContext.getViewRoot().getViewId();
UsuarioLoginController usuario = (UsuarioLoginController)
ToolJsf.getBean(“usuarioLogin”);
if (usuario.getUsuario().isTransiente() && (!
currentPage.contains(“telasComponentes/usuarioLogin.jsp”))
&& (!currentPage.contains(“telasComponentes/
empresaLogin.jsp”)) && (!currentPage.contains("/usuarioLogin.jsp"))) {
NavigationHandler nh = facesContext.getApplication
().getNavigationHandler();
nh.handleNavigation(facesContext, null, “loginPage”);
}
}
public void beforePhase(PhaseEvent event) {
}
public PhaseId getPhaseId() {
return PhaseId.RESTORE_VIEW;
}
}
MINHA VIEW FICOU ASSIM:
<script language="JavaScript">
window.parent.location = "usuarioLogin.jsf";
Index
VALEU GENTE… ESPERO QUE OS CODIGOS POSSAM AJUDAR MAIS ALGUEM