Style do Primefaces não carrega na primeira página da aplicação

Olá amigos,
estou com um problema utilizando o primefaces que é o seguinte…
Possuo dois WebFilters, um para a autenticação e outro para o entityManager. Quando estes filters estão habilitados a página
de login é a primeira a ser executada e esta não carrega o estilo padrão do primefaces. Só dá certo quando eu desativo os filters…

peço ajuda de vcs por favor…

Muito Obrigado

Seu filter deve estar barrando as chamadas do primefaces para carregar os estilos.

No seu filtro, veja as urls que estão sendo chamdas. você deve estar a bloquea-las.

nao tenho certeza… estes são os filtros:

Login


package br.com.umc.filtro;

import java.io.IOException;

import javax.faces.bean.SessionScoped;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet Filter implementation class LoginFilter
 */

@SessionScoped
public class LoginFilter implements Filter {

	/**
	 * Default constructor.
	 */
	public LoginFilter() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpSession session = req.getSession();

		if (session.getAttribute("autenticado") != null
				|| (req.getRequestURI().endsWith("login.xhtml"))) {
			chain.doFilter(request, response);
		} else {
			HttpServletResponse res = (HttpServletResponse) response;
			res.sendRedirect("login.xhtml");
		}

	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

entityManager

package br.com.umc.filtro;

import java.io.IOException;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class JPAFiltro implements Filter {

	private EntityManagerFactory factory;

	@Override
	public void destroy() {

		factory.close();
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		EntityManager entityManager = this.factory.createEntityManager();

		request.setAttribute("entityManager", entityManager);
		System.out.println("Abrindo transação");

		entityManager.getTransaction().begin();

		chain.doFilter(request, response);

		try {
			System.out.println("commit");

			entityManager.getTransaction().commit();
		} catch (Exception e) {
			e.printStackTrace();
			entityManager.getTransaction().rollback();
		} finally {
			entityManager.close();
		}

	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		this.factory = Persistence.createEntityManagerFactory("recrutamento");
	}

}

Obrigado

Tudo bem, mas é vc que tem q ver isso. =P

coloque um system.out.println e veja todas as url q estão sendo solicitadas. E veja qual que você pode permitir para ir numa boa.
Deve ter chamada do próprio primefaces aí.

jakefrog, vc poderia me dizer como imprimir as url’s??

Obrigado

É como o nosso amigo jakefrog falou,o filtro de autenticação tá barrando o acesso ao recurso.

Eu uso assim no meu filtro :

public class LoginFilter implements Filter {
	@Override
	public void init(FilterConfig arg0) throws ServletException {}
	@Override
	public void destroy() {}

	@Override
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		try{
			HttpServletRequest httpReq = (HttpServletRequest)req;
			HttpServletResponse httpRes = (HttpServletResponse)res;
			HttpSession session = httpReq.getSession(true);
			String url = httpReq.getRequestURL().toString();
			if(session.getAttribute("usuario")==null && precisaAutenticar(url)){
				httpRes.sendRedirect(httpReq.getContextPath()+"/login.jsf");
			}else{
				chain.doFilter(req, res);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	boolean precisaAutenticar(String url){
		return && !url.contains("login.jsf")
		&& !url.endsWith(".css")
		&& !url.endsWith(".js")
		&& !url.endsWith(".jpg")
		&& !url.endsWith(".gif");
	}
}

Ei sei que você pega de dentro do request.

Não me lembro agora de cabeça, request.get alguma coisa.

Sei que um dos métodos é req.getRequestURL() mas tem outros. Futuca aí q vc acha.

Aí antes do if para barrar o login você pode mandar imprimir quem ta chamando oq, você vai ver que vão ter diversas chamadas.

jakefrog realmente ele exibe varias chamadas a “css”, “js”, tal…
mas como fazer para nao barrar esses caras no primeiro acesso da página?
O método do raf4ever nao funcionou aki, dá um problema que o chrome diz q
“existem muitos redirecionamentos” e entao a pagina falha =/

alguma dica?

Muito Obrigado

No if que barra os request de pessoas não logadas, libere a chama aos css da vida. [=

Valeu a dica raf4ever funcionou certinho recuperando o css do primefaces.

Só tive que modificar ele um pouco.

	private boolean precisaAutenticar(String url) {
		return !url.contains("login.jsf") && !url.endsWith(".css") && !url.endsWith(".js") && !url.endsWith(".jpg")
				&& !url.endsWith(".gif") && !url.contains("javax.faces.resource");
	}