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
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