Redirecionar para a pagina principal com JSF + IFrame

Olá amigos,
Eu fiz um rich:toolBar que abre as paginas dentro de um iFrame, até ai tudo bem e tenho um Listener que controla a session do usuario, tambem tudo bem.

Eu queria saber como faço para quando a session expirar ele abrir a tela de login só que fora do IFrame, é possivel?

No momento ele abre a pagina de login só que dentro do iFrame.

Outra coisa o rich:toolBar é criado todo dentro do meu managedbean e lá eu coloco menuItem.setTarget(“frCorpo”); e funciona tranquilo.

Eu sei que se vc colocar no target="_parent" ele abre a pagina na raiz, mas não sei como fazer isso de dentro do meu Listener, que redireciona para a pagina dessa forma:

NavigationHandler nh = ctx.getApplication().getNavigationHandler();
nh.handleNavigation(ctx, null, “loginPage”);

Será que alguem pode me dar uma Luz??? :slight_smile:

Desde já agradeço qualquer ajuda.

posto o código aqui mano !

OK.

Pagina JSP

<h:form>
<rich:toolBar binding="#{MenuBar.menuBar}" />

            <iframe name="frCorpo" id="frCorpo" src="<%=basePath%>/inicial.jsp" allowtransparency="true" style="width:100%; height:45em;" frameborder="0" marginheight="0" marginwidth="0" scrolling="auto"></iframe>
        </h:form>

Bean Menu

public class MenuBar {

HtmlToolBar menuBar = new HtmlToolBar();

/** Creates a new instance of MenuBar */
public MenuBar() {
}

public HtmlToolBar getMenuBar() throws Exception {
    montarMenu();
    return menuBar;
}

public void setMenuBar(HtmlToolBar menuBar) {
    this.menuBar = menuBar;
}

public HtmlToolBar montarMenu() throws Exception {
    HtmlDropDownMenu menuDrop = new HtmlDropDownMenu();

    menuDrop.setValue("CADASTROS");
    // USUARIOS
    HtmlMenuItem menuItem = new HtmlMenuItem();
    menuItem.setId("id_usuario");
    menuItem.setValue("Usuários");
    menuItem.setTarget("frCorpo");
    FacesContext context = FacesContext.getCurrentInstance();
    Application app = context.getApplication();
    ExpressionFactory expressionFactory = app.getExpressionFactory();
    MethodExpression me = expressionFactory.createMethodExpression(
            context.getELContext(),
            "#{usuario.listSetup}", String.class, new Class[]{});
    menuItem.setActionExpression(me);
    menuDrop.getChildren().add(menuItem);
    
    return menuBar;
}

Listener da Session

@Override
public void afterPhase(PhaseEvent event) {
boolean Logado = false;
System.out.println(event.getPhaseId());
FacesContext ctx = event.getFacesContext();

    if (ctx.getViewRoot() == null) {
        try {

//TENTEI ISSO MAS NÃO FUNCIONA CONTINUA ENTRANDO DENTRO DO IFRAMA
ctx.getExternalContext().redirect("/Endereco/faces/pages/login/login.jsp");
} catch (IOException ex) {
Logger.getLogger(AuthorizationListener.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
ctx = event.getFacesContext();
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
Object usuarioLogado = session.getAttribute(“currentUser”);
if (usuarioLogado != null) {
Logado = true;
}
boolean isLoginPage = false;
String urlDestino = ctx.getViewRoot().getViewId();
if (urlDestino != null) {
isLoginPage = (urlDestino.lastIndexOf(“login.jsp”) > -1);
}

        //VALIDA A AUTORIZAÇÃO PARA ACESSAR A PÁGINA
        if (!Logado && !isLoginPage) {
            NavigationHandler nh = ctx.getApplication().getNavigationHandler();
            nh.handleNavigation(ctx, null, "loginPage");
        }
    }
}

Olá amigos outra vez :slight_smile:

Até o presente momento não consegui resolver o meu problema, então faço uma nova pergunta.

Existe alguma forma de abrir uma nova pagina dentro da pagina do Rich:DropDownMenu???

Se sim, daria para postar um exemplo?

Obrigado e abraços a todos

Jomello