resources (pasta)
|__ stylesheet.css (arquivo de estilo dentro de resources)
|__ image1.gif (imagem dentro de resources)
|
|index.jsp (jsp na raiz)
|changepasswd.jsp (jsp na raiz)
|error.jsp (jsp na raiz)
|
baan (pasta)
|___ os.jsp (jsp dentro de baan)
Todas as imagens e arquivos de estilo estão na pasta “resources”.
A error.jsp é a nossa página de erro padrão, e nela utilizamos alguns itens da pasta resources, como as figuras.
Estes itens são carregados utilizando-se do caminho lógico da aplicação, por exemplo: para as páginas da raíz usamos “resorces/image1.gif”, e para as páginas que estão fora da raiz usamos “…/resources/image1.gif”.
Quando um erro ocorre, todas as demais páginas jsp requisitam a error.jsp.
Toda esta navegabilidade está definida no arquivo de navegação.
O problema é o seguinte:
Quando ocorre um erro em uma página que não está na mesma pasta da error.jsp, a imagem e o arquivo de estilo não são encontrados e o browser não monta a página corretamente.
Isto só ocorre quando a página error.jsp é requisitada através de um erro gerado por uma página que não está no mesmo diretório dela.
Por exemplo, se um erro é gerado pela changepasswd.jsp, a página error.jsp é carregada corretamente.
O que percebemos é o seguinte:
Utilizando nossa estrutura como exemplo, se no processamento da página os.jsp, que está na pasta Baan, um erro é gerado, o sistema redireciona para a página error.jsp, que está na raiz.
No entanto, ao montar a página error.jsp, os objetos que estão na pasta resources estão sendo procurados na pasta baan e não na raiz como deveria acontecer, aí a página é carregada sem esses objetos.
O JSF não está controlando a saída de um diretório quando navega-se entre páginas de diretórios diferentes.
Por acaso alguém já sofreu esse problema??
Como podemos resolvê-lo??
Quando a error.jsp é chamada por outro jsp que está no mesmo diretório tudo certo, funciona beleza…
Mas, quando a error.jsp é chamada por um jsp que está em outro diretório, a error.jsp é mostrada mas sem os objetos.
O que aparenta é que o sistema está tentando encontrar “resources/stylesheet.css” no diretório da página anterior e não da error.jsp.
Barrilari,
ao invés de <link href="resources/stylesheet.css" rel="stylesheet" type="text/css"/>
tenta usar <link rel="stylesheet" type="text/css" href='<%= request.getContextPath() + "/stylesheet.css" %>'>
e ver se funciona! na minha aplicação deu certo
Entretanto dá a seguinte exceção em tempo de execução:
Exception Handler
Description: An unhandled exception occurred during the execution of the web application. Please review the following stack trace for more information regarding the error.
Exception Details: org.apache.jasper.JasperException
/Mensageiro.jsp(10,29) The value of attribute "href" must not contain the '<' character.
Possible Source of Error:
Class Name: org.apache.jasper.compiler.DefaultErrorHandler
File Name: DefaultErrorHandler.java
Method Name: jspError
Line Number: 43
Source not available. Information regarding the location of the exception can be identified using the exception stack trace below.
Ele não está deixando eu utilizar a tag “<%” no JSF.
Ainda não consegui encontrar uma solução que não seja o caminho absoluto da aplicação, o que pra mim é inviável.