Redirecionar para a pagina principal com JSF + IFrame

3 respostas
jomello_br

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.

3 Respostas

juniorsatanas

posto o código aqui mano !

jomello_br

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

<a class="mention" href="/u/override">@Override</a>

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");
        }
    }
}
jomello_br

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

Criado 2 de fevereiro de 2010
Ultima resposta 2 de fev. de 2010
Respostas 3
Participantes 2