Problema com session.invalidate() e css

7 respostas
joaosavio

Olá pessoal

Estou usando css na pagina de login. Quando o usuario faz logout, ou seja:

public String logoff() {        
        FacesContext fc = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) fc.getExternalContext().getSession(false);
        session.invalidate();
        return "gotoIndex";
}

a pagina de login fica zuada, parece q nao esta com o css

Outra coisa, se eu coloco a URL http://localhost:8084/BIO/faces/view/index.xhtml dá esse problema, contudo http://localhost:8084/BIO fica certinho

Alguem tem alguma ideia???

abs
João Sávio

7 Respostas

joaosavio

up

davidbuzatto

Oi,

Primeiramente, sem ups ok?

Quanto ao seu problema, o css está sendo referenciado corretamente na página gerada depois do logoff?

joaosavio

opa, a pagina é a mesma, eu só uso um filtro

public class AuthenticationFilter implements Filter {

    private String login = "/faces/view/index.xhtml";

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest hreq = (HttpServletRequest) request;
        //HttpServletResponse hresp = (HttpServletResponse) response;

        String requestUri = hreq.getRequestURI();
        HttpSession session = hreq.getSession();

        //pega usuarios da sessao
        Usuario usuario = (Usuario) session.getAttribute("usuario");       
        
        if (requestUri.contains(login)) {
            chain.doFilter(request, response);
        }
        else if (usuario != null) {
            chain.doFilter(request, response);
        }       
        else {
            RequestDispatcher rd = request.getRequestDispatcher(login);
            rd.forward(request, response);
        }

    }

    @Override
    public void destroy() {

    }
}
davidbuzatto

Tá, mas e o html gerado? Como que está ficando a referência para o css?

joaosavio

O meu css está referenciado no template:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets">

    <head>
        <link href="css/style.css" rel="stylesheet" type="text/css"/>
        <title>BioPipe</title>
    </head>

No código fonte está assim:

antes

<head>
        <link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1org/richfaces/renderkit/html/css/basic_classes.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__;jsessionid=533D574D9F0D2B4B6ACAE1B3AF092765" rel="stylesheet" type="text/css" /><link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1org/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__;jsessionid=533D574D9F0D2B4B6ACAE1B3AF092765" media="rich-extended-skinning" rel="stylesheet" type="text/css" /><link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1css/panel.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__;jsessionid=533D574D9F0D2B4B6ACAE1B3AF092765" rel="stylesheet" type="text/css" /><script src="/BIO/faces/a4j/g/3_3_2.SR1org.ajax4jsf.javascript.AjaxScript" type="text/javascript"></script><script src="/BIO/faces/a4j/g/3_3_2.SR1org/ajax4jsf/javascript/scripts/form.js" type="text/javascript"></script><link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1css/separator.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__;jsessionid=533D574D9F0D2B4B6ACAE1B3AF092765" rel="stylesheet" type="text/css" /><script type="text/javascript">window.RICH_FACES_EXTENDED_SKINNING_ON=true;</script><script src="/BIO/faces/a4j/g/3_3_2.SR1org/richfaces/renderkit/html/scripts/skinning.js" type="text/javascript"></script><link href="css/style.css" rel="stylesheet" type="text/css" />
        <title>BioPipe</title>
    </head>

depois

<head>
        <link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1org/richfaces/renderkit/html/css/basic_classes.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__" rel="stylesheet" type="text/css" /><link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1org/richfaces/renderkit/html/css/extended_classes.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__" media="rich-extended-skinning" rel="stylesheet" type="text/css" /><link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1css/panel.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__" rel="stylesheet" type="text/css" /><script src="/BIO/faces/a4j/g/3_3_2.SR1org.ajax4jsf.javascript.AjaxScript" type="text/javascript"></script><script src="/BIO/faces/a4j/g/3_3_2.SR1org/ajax4jsf/javascript/scripts/form.js" type="text/javascript"></script><link class="component" href="/BIO/faces/a4j/s/3_3_2.SR1css/separator.xcss/DATB/eAGbo7-tNnT5DGkAEXoDrg__" rel="stylesheet" type="text/css" /><script type="text/javascript">window.RICH_FACES_EXTENDED_SKINNING_ON=true;</script><script src="/BIO/faces/a4j/g/3_3_2.SR1org/richfaces/renderkit/html/scripts/skinning.js" type="text/javascript"></script><link href="css/style.css" rel="stylesheet" type="text/css" />
        <title>BioPipe</title>
    </head>

O estranho é que tem um figura que tb nao aparece mais

davidbuzatto

João, tente isso aqui:

<link href="${pageContext.request.contextPath}/css/style.css" rel="stylesheet" type="text/css"/>

Isso vau fazer com que a URL seja escrita com o caminho inteiro.

Vá ajustando o valor do href até funcionar. Não sei se vai ser necessário colocar um /faces/ entre o css e o contextpath.
Veja se funciona e avisa ai :wink:

[]´s

joaosavio

Nao funcionou cara, mas descori uma coisa

Nao tem nada haver com o session.invalidate()

Se eu coloco a URL http://localhost:8084/BIO/faces/view/index.xhtml dá esse problema, contudo http://localhost:8084/BIO fica certinho

No web.xml:

<welcome-file-list> <welcome-file>faces/view/index.xhtml</welcome-file> </welcome-file-list>

Criado 13 de janeiro de 2010
Ultima resposta 18 de jan. de 2010
Respostas 7
Participantes 2