Funções JavaScript não funcionam em JSP (Resolvido !)

8 respostas
A

Acredito ser algo simples, mas já me matei pra fazer isso funcionar e não consigo. Ouvi dizer que o tempo de compilação do JSP e interpretação do JavaScript são diferentes e por isso não funcionaria, mas como resolvo?

Só tenho 2 funções, uma de máscara e outra que só permite números.

Segue o Código do Java Script (funcoes.js):

function formata_mascara(campo_passado,mascara)
{
	var campo = campo_passado.value.length;
	var saida = mascara.substring(0,1);
	var texto = mascara.substring(campo);
	if(texto.substring(0,1) != saida)
	{
		campo_passado.value += texto.substring(0,1);	
	}
}

function only_number() 
{
	if (event.keyCode == 13) 
 	{
	  	text2.focus();  text2.select();
	  	return true
 	}

	 if (!(event.keyCode >= 48 && event.keyCode <= 57))
  	{
  		return false
  	}
 	else
  	{
  		text2.value = text2.value + event.keyCode;
  	}
	return true
}

Segue o código do JSP (CadastroGrupo.jsp):

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<script language="javascript" src="funcoes/funcoes.js"> </script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Cadastro Grupo</title>
    <%@page import="modelo.Cooperativa" %>
	<%@page import="java.util.ArrayList;"%>
	<%! ArrayList<Cooperativa> cooperativas; %>
</head>

<body>	
<center>
<%if(session.getAttribute("acesso") != null)
{
	cooperativas = (ArrayList<Cooperativa>)session.getAttribute("cooperativas");%>
 
		<form action="/grupo_taxi/ControleGrupo" method="get">
		  
          <table border="0" align="center">
                
                <tr>
                  <td align="right">Destino: </td>
                  <td><input type="text" size="15" name="destino" /></td>
                </tr>
                
                <tr>
                  <td align="right">Horário: </td>
                  <td><input type="text" name="horaPartida" size="15" maxlength="5" onkeypress="formata_mascara(this,'##:##'); return only_number();"/></td>
                </tr>
                
                <tr>
                  <td align="right">Data: </td>
                  <td><input type="text" name="data" id="data" size="15" maxlength="10" onkeypress="formata_mascara(this,'##/##/####'); return only_number();" /></td>
                </tr>
                
                <tr>
                  <td align="right">Cooperativa: </td>
                  <td align="left">
                  <select>
                  <% for(Cooperativa coop : cooperativas){%>
                  		<option value="<%= coop.getId() %>" selected="selected"> <%= coop.getNome() %> </option>
                  <%} %>
                  </select>
                  </td>
                </tr>
                
                <tr align="center">  
              		<td colspan="2">
              		<input type="submit" name="comando" value="Cadastrar" /> 
              		<input type="reset" value="Limpar" />
              		<input type="submit" name="comando" value="Voltar" />
              		</td> 
               	</tr>
            </table>
            
		</form>
<%
}
else
	out.print("<b>Acesso Negado.</b>");

if (request.getAttribute("mensagem") != null)
		out.print(request.getAttribute("mensagem"));	
	%>
</center>
</body>
</html>

AGRADEÇO QUALQUER ÍDEIA, POIS JÁ ESTOU SEM !!!

8 Respostas

A

Ninguém?

A

Po nem meu professor descobriu pq não está funcionando. Ninguem sabe ae?

R

Coloca as funções dentro da página, se funcionar é porque o caminho do arquivo tá errado.

T

Use um debugador Javascript no seu browser (por exemplo, no Firefox existe o Firebug, se não me engano) - pode ser, como foi sugerido pelo Rafael, que o arquivo funcoes.js esteja instalado no local errado de sua aplicação Web e não esteja descendo. Obviamente ele NÃO PODE FICAR instalado em um subdiretório de WEB-INF porque esse diretório é completamente invisível para o browser.

A

Na verdade a estrutura é essa:

  • WebContent
    ____+ META-INF
    ____- visao
    ________- funcoes
    ____________funcoes.js
    ________.CadastroGrupo.jsp
    ____+ WEB-INF

(Deu pra entender? rs)

Tem algo errado na estrutura? Eu fico intrigado porque uma vez essas funções funcionaram, dps deixaram de funcionar quando alterei o arquivo jsp(em áreas nada aver com o script).

OBS: Testei o script dentro da pagina e também não funcionou, não sei se fiz certo, depois colo o código do teste aqui.

Vou baixar o Firefox pra tentar esse Debugador. Se alguem tiver alguma ídeia posta ai.

Caso eu descubra a solução eu posto a resposta aqui.

Obrigado !!!

A

Pessoal,

segue a alteração do código do Head abaixo:

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Cadastro Grupo</title>
    <%@page import="modelo.Cooperativa" %>
    <%@page import="modelo.Destino" %>
	<%@page import="java.util.ArrayList;"%>
	<%! ArrayList<Cooperativa> cooperativas; 
		ArrayList<Destino> destinos;%>
	<script type="text/javascript">		
		function formata_mascara(campo_passado,mascara)
		{
			var campo = campo_passado.value.length;
			var saida = mascara.substring(0,1);
			var texto = mascara.substring(campo);
			if(texto.substring(0,1) != saida)
			{
				campo_passado.value += texto.substring(0,1);	
			}
		}

		function only_number() 
		{
			if (event.keyCode == 13) 
		 	{
			  	text2.focus();  text2.select();
			  	return true
		 	}
		
			 if (!(event.keyCode >= 48 && event.keyCode <= 57))
		  	{
		  		return false
		  	}
		 	else
		  	{
		  		text2.value = text2.value + event.keyCode;
		  	}
			return true
		}
	</script>	
</head>

Com essa alteração o código funcionou desta vez ! PORÉM fica o mistério porque o JSP não achou o diretório criado ??? Considero como problema não resolvido.

Se alguém tiver uma explicação racional pra isso… pq eu não tenho

Obrigado ae quem tentou ajudar

R

Pela estrutura que você apresentou, sua referência deveria estar em:

script language="javascript" src="visao/funcoes/funcoes.js"> </script>
A

Rapaz você tem toda a razão, imaginei que como o jsp está na pasta visão não precisava incluir esta pasta no caminho, mas realmente resolveu.

Muito Obrigado !!! Não tem noção de como ajudou.

Abraços

Criado 25 de abril de 2009
Ultima resposta 30 de abr. de 2009
Respostas 8
Participantes 3