Java chamando funcao JavaScript?

Pessoal

Seguinte, nao estou conseguindo chamar uma função em JavaScript.

Assim, fiz em Java:

String txtEstado = 	request.getParameter("estadosCombo");
String txtCidade = 	request.getParameter("cidadesCombo");

        System.out.println(txtEstado); //mostrou certo, suponha: "teste"

          
 try{
         if(txtEstado.equals("teste")){ 
         //também não funcionou:txtEstado.equals("")
         //Passa aqui, mas não entra no JavaScript. O codigo nao precisa
         não precisava estar aqui, mas precisa chamar uma função então
         tem algum segredo de JavaScript em JSP ??? 
%>

<SCRIPT language="JavaScript">
		
document.TheForm.cidadesCombo.disabled = true;
		
</SCRIPT>
<% ...

É claro, aqui eu tirei muita coisa, mas é basicamente isso que eu quero.

Alguém pode me ajudar? :wink:

Obrigado

E aí woquiton, seguinte, no JavaScript, eu pelo menos não sei como recuperar dados pelo métodos GET e POST, então trabalho da seguinte maneira, que também não acho muito elegante:

  • Recupero os dados em uma variável no JSP e aí uso em conjunto com a minha função em javaScript.
    Exemplo:

String txtEstado = request.getParameter(“estadosCombo”);


function Cidade(){
var estado = <% out.println(txtEstado); %>;

íf(estado == “RS”) {
Bla, Bla,…
}
}

Se não estiver muito claro, posta que tento explicar melhor.

Lucas

To tentando fazer isso mesmo, mas estou tentando deixar as condições… (if) em Java mesmo…

Seguinte, nao sei se já viu… tem umas consultas com combobox agora, que funciona assim… o usuario seleciona o estado, estao o combobox de cidade é liberado e faz uma consulta das cidades do estado selecionado do combo ao lado. Isso vale para o bairro também.

Então… tenho que fazer as condições em JavaScript, a parte de
document.Form.ComboTal.disabled = true nao funciona dentro do JavaScript dentro do Java. Acho que ele executa o JavaPrimeiro.

Seguinte, após selecionado o Estado, tu tens que submeter a página novamente. Submetida a página, tu realiza a pesquisa de cidades com o estado recuperado, monta o combo de cidades.
Exemplo:

<script language=“Javascript”>
function Cidade(){
var estado = <% out.println(strEstado); %>;

if(estado != “”){
document.form.combocidade.disabled = false;
}else{
document.form.combocidade.disabled = true;
}
}
</script>

  • Tu deves utilizar somente as variáveis do JSP na Função do JavaScript e realizar o controle todo por ele.

Lucas

Então, acho que vc tem razão, mas o que me preocupa, é que acho que não será mantido o estado. Por exemplo.

Quando eu selecionar o estado, e submeter para a mesma pagina…
A consulta do combo de estados será feita de novo… quase certo que ele nao manterá o estado, tipo ‘SP’ no Combo (como selecionado, e os outros ainda lá, pois quando o usuario alterar (on change), chamo uma funcao JavaScript que submeterá novamente o formulario.
Isso de manter selecionado seria importante, pensei numa session, mas assim nao daria também, pois ficaria 2 SP. Um SP do session e outro SP da própria consulta…
O que acha?

[quote=“woquiton”]Lucas

Então, acho que vc tem razão, mas o que me preocupa, é que acho que não será mantido o estado. Por exemplo.

Quando eu selecionar o estado, e submeter para a mesma pagina…
A consulta do combo de estados será feita de novo… quase certo que ele nao manterá o estado, tipo ‘SP’ no Combo (como selecionado, e os outros ainda lá, pois quando o usuario alterar (on change), chamo uma funcao JavaScript que submeterá novamente o formulario.
Isso de manter selecionado seria importante, pensei numa session, mas assim nao daria também, pois ficaria 2 SP. Um SP do session e outro SP da própria consulta…
O que acha?[/quote]

Isso deve resolver:
<select name=“ESTADO”>
<option
<%
if(strEstado == VALOR_DO_CAMPO_DO_BD){
out.println(“selected”)
}
%> value=“VALOR DO CAMPO DO BD”><%VALOR DO CAMPO DO BD%></option>
</select>

Lucas

Vou colar em prática.
Obrigado mesmo pela ajuda.
Acho que vai dar tudo certo sim.

Valeu.

[]´s

Woquiton :slight_smile:

Qualquer coisa, posta o fonte para darmos um olhada, ou manda por
e-mail.

Valeu :wink:

Lucas

Só mais uma questão, como vc faz pra chamar a função JavaScript. Assim que abrir a pagina, com onLoad ??

Pergunto isso por que, as variáveis postadas, devem primeiro:

String a = request.getParameter(“blaba”);

pra depois eu enviar numa função JavaScript.

Qual a melhor forma? A questão é conseguir enviar as variáveis postadas.

[]´s

Isso mesmo, chama a função pelo onLoad, porque as variáveis na função JavaScript já estarão preenchidas. :wink:

Lucas

Tá indo tudo bem, só agora que emperrou num erro de sintaxe.
Tem idéia o que pode ser??

estado é a variável de retorno do banco

if(txtEstado.equals(estado.toString())) out.println(“selected”)

[quote=“woquiton”]Lucas

Tá indo tudo bem, só agora que emperrou num erro de sintaxe.
Tem idéia o que pode ser??

estado é a variável de retorno do banco

if(txtEstado.equals(estado.toString()))
out.println(“selected”)
[/quote]

  • O erro de sintaxe é do JavaScript ou do JSP?

if&#40;txtEstado.equals&#40;estado.toString&#40;&#41;&#41;&#41; out.println&#40;&quot;selected&quot;&#41; -- Faltou ';'

É do JSP… :roll:

Verifica se não é o “;” logo após o out.println.

Lucas

O ; eu coloquei, nao era isso. Era uma tag, desatenção minha.
Mas ele tá com problema na condição… já tentei == , .equals … .toString().equals() … e coloquei fixo, mas ainda assim ele nao funciona a condição.

:wink:

Coloca o pedaço do fonte onde ele gera o combo para que eu possa dar uma olhada. Por favor.

txtEstado é a variavel do request.getParameter
estado é a do banco.
Dei um out.println nas duas, e as duas vem com valor corretamente. E iguais.

<select size=“1” name=“estadosCombo”
onchange=“javascript:changeEstado();”>

		&lt;%

	try{

		EstabelecimentosAction estAction = new EstabelecimentosAction();

		ArrayList estados = estAction.getEstados();

	    Iterator iter = estados.iterator();

  %&gt;
		
		&lt;option value=""&gt;&lt;/option&gt;
		&lt;%
		
		
		while (iter.hasNext()){

			  EstabelecimentosVO  listEstados = (EstabelecimentosVO) iter.next();
	
			  String estado = listEstados.getEstado();	  

		  %&gt;
		&lt;option
			&lt;% if(txtEstado == estado){ 
			out.println("selected");} %&gt;
			value="&lt;%=estado%&gt;"&gt; &lt;%=estado%&gt;&lt;/option&gt;

		&lt;%
				}}catch(Exception e){

			  	System.out.println(e);
			  	e.printStackTrace();
		  }
		  %&gt;

	&lt;/select&gt;

Lucas

Funcionou aqui, ao invés de txtEstado.equals, estado.equals. A variável do request, nao verificava direito a igualdade. Extranho nao é?

:slight_smile:

Beleza woquiton, espero que a ajuda tenha valido a pena.

Valeu carinha. :wink:

Lucas

Claro, você me ajudou bastante.
Obrigado mesmo.

Espero poder contar mais vezes com sua ajuda, se precisar também, quem sabe eu nao saiba.

[]´s

Woquiton