JSF +WelcomeFileList = gambi

1 resposta
J

Oi gente,

to fazendo umas coisinhas aqui no JSF e percebi que:
se eu coloco como welcomefile digamos … index.jsp, na hora que eu acessar o diretorio /aplicacao/ ele redireciona mesmo para o index.jsp :slight_smile: rssrsrs
e como o index.jsp nao passou pelo servlet do Faces ( que está mapeado em *.jsf ) me dá um erro :S
ai eu procurei na net, o que mais o povo faz é assim: colocar com welcomefile, digamos um… index.html em CADA PASTAAA e este redireciona para o index.JSF contido na pasta …

nao achei nem um pouco legal essa historia de botar uma pagina em cada diretorio só pra ficar redirecionando para .jsf quando a requisição vem em .jsp

aí eu fiz um filtro para interceptar as requisições as welcomefiles, se chegar uma requisição a qualquer index.jsp, ele redireciona para index.jsf para que esta processe.

eis o filtro:

private FilterConfig fc;
  private final String welcomePages="index.jsp,default.jsp";

	public void destroy() {
		
	}

	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		
		
				
		String requisicao = ((HttpServletRequest)request).getServletPath();
		String pagina = requisicao.substring(requisicao.lastIndexOf("/")+1);
		
		Scanner s = new Scanner(welcomePages);
		s.useDelimiter(",");
		RequestDispatcher rd =null;
		laco: 
			while(s.hasNext()){
			
			if(s.next().equals(pagina)){
				
				rd = request.getRequestDispatcher(pagina.replace(".jsp", ".jsf"));
				
				break laco;
			}
			
			}
      
		if(rd != null){
			rd.forward(request, response);
		}
		else{
			chain.doFilter(request, response);
		}
		
		
	}

	
	public void init(FilterConfig fConfig) throws ServletException {
		this.fc = fConfig;
	}

(obs: esse filtro é mapeado em *.jsp somente em request … se ele for mapeado em dispatch irá entrar em loop quando o FacesServlet chamar o .jsp)

na string welcomefiles é que eu ponho a lista de arquivos que serao redirecionados, nao to com saco agora hauhaau, mas depois eu posso ler esses arquivos lah do welcomefilelist do web.xml

enfim a PERGUNTA…

essa é a melhor solução?

eu acho … alias tenho certeza … que isso é melhor q botar um arquivo de redirecionamento em cada diretorio

mas há outra solução melhor??
na net só achei essas gambi ahauhua nenhum recurso pronto

1 Resposta

Jair_Rillo_Junior

Se eu não me engano isso ocorre só com o Tomcat, correto?

Acho que se usar o Glassfish por exemplo, ele encontra direto o “index.jsf”. (Palpite apenas).

Criado 28 de setembro de 2009
Ultima resposta 28 de set. de 2009
Respostas 1
Participantes 2