Galera,
estou tentando organizar uma app em diretórios, mas os caminhos dos actions dos formulários ficam loucos! Dependendo da forma de acesso a uma página (direta, via link ou via servlet) a mesma pagina pode não ser encontrada, ser mostrada sem o css ou ser mostrada normalmente. …
Eu não estou conseguindo entender a regra de funcionamento por trás disso. Alguém poderia me explicar ou indicar um texto que explique?
Estou tendo dificuldades particulares com uma página que está em um subdiretório e cujos actions são para ela mesma ou para um Servlet que faz algo e depois redireciona para a mesma página.
Ela funcionava normalmente quando estava na raiz da app, mas quando eu coloquei num diretório, ela endoidou.
Agradeço qualquer luz para entender essa confusão. :?
Creio que o problema que voce esta tendo eh em relacao a “diretorios virtuais” Olhe a url desse topico e entenda do que estou falando… nao existe o diretorio “posts/list” em disco".
Para contornar isso, as suas imagens, css e afins precisam partir da raiz. Ou seja, ao inves de fazer
<img src="images/logo.gif">
voce tem que fazer
<img src="/images/logo.gif">
O que faco no JForum, ainda, eh adicionar o nome do contexto via programacao. O template fica algo como isso:
<img src="${contextPath}/images/logo.gif">
onde “contextPath” eh o nome do contexto do servlet.
Rafael
[quote=Rafael Steil]Creio que o problema que voce esta tendo eh em relacao a “diretorios virtuais” Olhe a url desse topico e entenda do que estou falando… nao existe o diretorio “posts/list” em disco".
[/quote]
Mas os meus diretórios são reais! isso porque eu quero organizar a bagunça, ao invés de ficar com zilhoes de jsps no diretorio raiz.
Quanto ao caminho absoluto,
desgraça total… Mudando o estilo para
<link rel='stylesheet' href='/estilo.css' type='text/css' />
Nenhuma página mais enxerga o css, nem na raiz!
Esse contextPath tem que ser hard-coded? Eu não queria congelar o contexto da app…
Valeu
Um detalhe: se voce tem algum contexto, simplesmente colocar “/” nao funciona, ja que vai cair na raiz do server. Nesse caso voce vai precisar sim colocar o nome do contexto.
Agora, caso voce saiba de antemao a estrutura de diretorios, pq simplesmente nao faz algo como
<img src="../../images/logo.gif">
Se os diretorios nao ficarem mudando, o que te impede de referenciar assim?
Rafael
[quote=Rafael Steil]
<img src="../../images/logo.gif">
Se os diretorios nao ficarem mudando, o que te impede de referenciar assim?
Rafael[/quote]
É que tem paginas que ora são acessadas via link normal, ora por um servlet, e ai os caminhos relativos vão para o beleléu.
Estou resolvendo com essa gracinha :
${pageContext.request.contextPath}
em todos os caminhos…
Valeu.