JavaScript e JSP!

olá me deem uma ajuda…



eu posso inserir comandos jsp dentro de uma tag J A V A S C R I P T <script></scrtipt> e chamar no onclick de um botao por exemplo…o codigo jsp para ser executado???



obrigado!!



felipe.

acho que vc está falando de fazer algo assim:



<script>

function decide() {

if(condicaook) {

<% codigo jsp %>

} else {

<% outro codigo jsp%>

}

}

</script>



acredito que não seja possivel fazer isso. alias, tenho quase :wink: certeza de que não. isso porque o codigo dentro da função de J A V A S C R I P T estaria esperando por codigo de J A V A S C R I P T e, a menos que o seu codigo jsp gerasse codigo em js, o browser interpretaria como js. ou seja, ia dar pau.



acho que talvez vc deva dar uma olhada na tag include de jsp. essa tag permite que vc insira recursos estaticos ou dinamicos a sua pagina. daí vc poderia fazer algo do tipo:



<% if(condicaook) {%>

<jsp:include "codigo1.jsp" flush="true">

<% } else { %>

<jsp:include "codigo2.jsp" flush="true">

<% } %>



se quiser ver a sintaxe do comando(e das tags jsp) melhor clique aqui.



valeuz…

Pittella, eis algumas mensagens no forum sobre include que podem lhe interessar.

http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&topic=678&forum=6





valeuz…

É importante entender que o JSP é processado quando o usuário abre a página, tornando-se um arquivo HTML normal, enquanto o JavaScrip acontece de acordo com os eventos da própria página, depois que ela já carregou.

Desta forma, você pode colocar tags de JSP dentro do JavaScrip para por exemplo mandar algum valor para o JavaScrip, e quando o usuário abrir a página, se olhar o source, vai ver diretamente o valor. Mas você não consegue por exemplo executar um método JSP através de um evento de JavaScrip, pelo simples fato do método "não estar mais lá" quando o usuário abriu a página.

eu consegui fazer algo semelhante a isso da seguinte forma:

como o J A V A S C R I P T nao roda codigo jsp, por que o codigo jsp é rodado no servidor e o javascritp é rodado no cliente (isso pode ser mudado, mas agora nao vem ao caso), eu fiz meu codigo jsp gerar codigo javascirpt dinamicamente… algo assim:



<script>

<%for (int i=0; i < numvar; i++){%>

if (alguma coisa com o <%=i%>)

{



mais codigo J A V A S C R I P T

}

<%}%>

</script>



é uma forma alternativa, mas funcionou!



espero ter ajudado!



andre

Vc pode dizer como usou isso? É que não vejo muito utilidade em mandar as jsp gerarem codigo js. Pode exemplificar o seu caso de uso? :wink:



valeuz… :smiley:



jack_-ganzha



[ Esta mensagem foi editada por: jack
-_ganzha em 11-03-2003 13:00 ]

Só um "plus a mais" no tópico:



Exite uma solução gambiarra(O HTML por si só já é uma gambiarra) pra executar métodos JSP, em uma página, sem que seja necessário recarregar a página.

Vc define um iframe oculto na página. Na página do iFrame, está o metódo que vc quer executar. A partir da página principal, vc chama o iframe.

Depois que o iFrame executa o método Java desejado, pega-se as valores de retorno do método, e seta-se estes valores na página principal, atráves de Js.



ps. Na verdade o iFrame oculto é a maneira mais usada mas, dá p/ usar uma página qualquer(chamada através de window.open() ) ou um modalDialog.

[quote]

11/03/2003 - 12:59, jack_-ganzha wrote:

vc pode dizer como usou isso? é que não vejo muito utilidade em mandar as jsp gerarem codigo js. pode exemplificar o seu caso de uso? :wink:



valeuz… :-d



jack
-ganzha





[ esta mensagem foi editada por: jack
-_ganzha em 11-03-2003 13:00 ]

[/quote]



meu caso de uso foi assim: eu tinha varios <input type="text"> criados dinamicamente! e eu precisava fazer um monte de validações com esses inputs, tipo, não poder ser nulo, etc. então eu setei os atributos ´name´s deles com um variável dentro de um loop (por exemplo: <input type="text" name="nome<%i%>"> )!



lah no J A V A S C R I P T eu recriei o loop, acessando cada atributo pelo nome<%=i%>!





mas gostei também da solução gambiarra do franklin! :-d



[ ]´s



andré