Perda de referencia das libs javascript

5 respostas
tefo

Eai galera…

no meu projeto uso vRaptor, e esta acontecendo uma coisa mto estranha que eu nao consegui resolver…

metodo para editar o cadastro de uma pessoa:@Restrito @Get @Path("/editarPessoa/{id}") public Pessoa editar(Long id) { return dao.consultar(id); }
URL que acessa o metodo:http://localhost:8080/website/editarPessoa/5

ateh ai tudo bem… o metodo eh executado e retorna os dados certinhos… o problema eh que depois disso a tela de ediçao do cadastro de pessoa perde todas as referencias das bibliotecas javascript e css, ou seja, nao funciona jQuery, estilos, etc…

fazendo alguns testes descobri que, por exemplo, se a URL estiver em um nivel a menos como a seguinte:http://localhost:8080/website/editarPessoaas libs javascritp e css estao funcionando… mas se a URL tiver um ou mais niveis (niveis digo as barras …/editarPessoa/nivelUm/nivelDois ) entao as paginas perdem a referencias das libs…

pagina com as libs:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Controle de Receitas, Depósitos e Débitos de Valores</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script> <script type="text/javascript" src="javascripts/jquery-1.7.2.js"></script> <script type="text/javascript" src="javascripts/kick-start/js/prettify.js"></script> <!-- PRETTIFY --> <link rel="stylesheet" type="text/css" href="javascripts/kick-start/style.css" media="all" /> <!-- CUSTOM STYLES --> <link rel="stylesheet" type="text/css" href="javascripts/kick-start/css/kickstart.css" media="all" /> <!-- KICKSTART --> <script type="text/javascript" src="javascripts/kick-start/js/kickstart.js"></script> <!-- KICKSTART --> <link rel="stylesheet" type="text/css" href="javascripts/jgrowl/jquery.jgrowl.css" media="all"/> <script type="text/javascript" src="javascripts/jgrowl/jquery.jgrowl.js"></script> <script type="text/javascript" src="javascripts/jquery.maskedinput-1.3.js"></script> <script type="text/javascript" src="javascripts/jquery.validate.min.js"></script> <link rel="stylesheet" type="text/css" href="javascripts/jquery.autocomplete.css" media="all" /> <script type="text/javascript" src="javascripts/jquery.autocomplete.min.js"></script> <script type="text/javascript" src="javascripts/jquery.puts.js"></script> </head> ...
a pasta “javascripts/” esta dentro de WebContent/

Alguem pode me ajudar neste caso?

5 Respostas

fabiozanardi

experimente colocar em todos seus javascripts do projeto o caminho absoluto do arquivo, como por ex:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script>  

<script type="text/javascript" src="http://urldoprojeto/Projeto/javascripts/jquery-1.7.2.js"></script>
tefo

eai fabio…

funcionou colocando http://localhost:8080/website/javascripts/

mas nao existe um jeito melhor ou mais “certo”? isso parece gambiarra… hauhaha

davidbuzatto

Esse aqui é melhor:

${pageContext.request.contextPath} vai obter o contexto da aplicação automaticamente.
Use a mesma coisa para css, imagens ou quaisquer outros recursos.

[]'s

tefo

eai David…

fiz do jeito que vc disse… mas olha o que acontece:<head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Controle de Receitas, Depósitos e Débitos de Valores</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js"></script> <script type="text/javascript" src="org.apache.jasper.runtime.PageContextImpl@1930fa6f/javascripts/jquery-1.7.2.js"></script> <script type="text/javascript" src="[VRaptorRequest org.apache.catalina.core.ApplicationHttpRequest@5e899a54]/javascripts/kick-start/js/prettify.js"></script> <!-- PRETTIFY --> <link rel="stylesheet" type="text/css" href="/website/javascripts/kick-start/style.css" media="all" /> <!-- CUSTOM STYLES --> <link rel="stylesheet" type="text/css" href="/website/javascripts/kick-start/css/kickstart.css" media="all" /> <!-- KICKSTART --> <script type="text/javascript" src="/website/javascripts/kick-start/js/kickstart.js"></script> <!-- KICKSTART --> <link rel="stylesheet" type="text/css" href="/website/javascripts/jgrowl/jquery.jgrowl.css" media="all"/> <script type="text/javascript" src="/website/website/javascripts/jgrowl/jquery.jgrowl.js"></script> <script type="text/javascript" src="/website/website/javascripts/jquery.maskedinput-1.3.js"></script> <script type="text/javascript" src="/website/website/javascripts/jquery.validate.min.js"></script> <link rel="stylesheet" type="text/css" href="/website/website/javascripts/jquery.autocomplete.css" media="all" /> <script type="text/javascript" src="/website/website/javascripts/jquery.autocomplete.min.js"></script> <script type="text/javascript" src="/website/website/javascripts/jquery.puts.js"></script> </head>

fica /website/website/

em alguns fica certo e em outras libs fica duplicado…

eu sei que o certo eh obter sempre o contexto da aplicaçao de forma dinamica… tem outro jeito de pegar ele?

tefo

descobri o porque que nao estava dando certo…

quando eu abri este topico eu estava fazendo da seguinte forma a declaraçao das libs:

apos a dica do fabio eu estava fazendo da seguinte maneira:

<script type="text/javascript" src="<c:url value="${pageContext.request.contextPath}/javascripts/jquery.puts.js"/>"></script>e ocasionava a duplicidade do contexto.

o jeito que faz o contexto dinamico funcionar eh desta maneira (sem o uso da JSTL):

mas como todo o meu projeto eu uso a JSTL a declaraçao das libs fica fora do padrao…

Alguem sabe qual eh a forma da JSTL obter o contexto dinamico?

Criado 1 de agosto de 2012
Ultima resposta 1 de ago. de 2012
Respostas 5
Participantes 3