JSP x JAVASCRIPT

9 respostas
Marques

Amigos,

Qual o equivalente de document.TesteSub.login.value == “QQUER COISA”

em JSP???

Quero tão somente pegar o valor digitado em um campo na mesma pagina jsp.
request.getParameter pega normalmente em outras paginas, porém na mesma página retorna null

Muito obrigado,

Marques

9 Respostas

danieldestro

O código JSP só vai atender a um request e não a eventos no browser.
Você deve usar Java Script mesmo para pegar/atribuir valor do/ao campo, sem antes fazer um request.

RodrigoSol

Se for usando o request:

if(request.getParameter("nome-do-campo").equals("qualquer-coisa")){
//Faça alguma coisa
}
Marques

Rodrigo,

Como eu disse, o request não funciona, pois estou na mesma página.
Imagine que eu tenha um combo com empresas e selecionei uma determinada empresa. Então quero popular um outro combo com os funcionarios da empresa selecionada. Vc tem um exemplo de como eu consigo fazer isso?

[]s,

Marques

danieldestro

Vc só está usando JSP ??

RodrigoSol
Formula do Sucesso:
Crie como um Deus, mande como um Rei e trabalhe como um Escravo!
Steve Jobs

Formula da infelicidade tbm.

F

Caso vc esteja usando a conexão e queries na mesma página jsp em que vc tem o html (o que não é uma boa prática), vc deve na action do combo chamar está página. Desta forma ao carregá-la novamente vc pode verificar se a primeira combo está preenchida e posteriormente executar querie e popular a seguinte.

Vc poderia usar proxilet (Acho que é assim :roll: ). Este é um applet invisível que roda na página e faz requisições ao servidor conversando posteriormente com o javascript.
Pesquisa por proxilet ou atualização sem refresh que tem coisa aqui mesmo no forum.

abraço,

Marques

Rodrigo,

Estou começando jsp. Qual a sua sugestão?

Sds,

Marques

RodrigoSol

Você faz um post para a mesma página e pega os parametros…

html

<form name="x" action="" method="post">
<select name="xpto" onselect="javascript:x.submit()"></select>
</form>

Agora é só pegar via getParameter.

Claro! tudo tem limites, mas que é uma frase de efeito ninguém pode negar… :stuck_out_tongue:

danieldestro

Tá podre, mas funciona:

<%@ page import="java.util.List, java.util.ArrayList, java.util.Hashtable" %>
<%@ page import="java.util.Enumeration, java.util.Iterator" %>

<%!
 // Suponha que seus dados venham em um List
 // e um Hashtable... bem como podem vir do banco
 
 List empresas = new ArrayList();
 Hashtable funcionarios = new Hashtable();
 
 {
   for( int i=0; i<5; i++ ) {
     empresas.add( "Empresa "+i );
     List funcs = new ArrayList();
     for( int j=0; j<10; j++ ) {
       funcs.add( "Funcionario "+(i*10)+j );
     }
     funcionarios.put( "Empresa "+i, funcs );
   }
 }

%>

<%
  //pega os dados do request
  String empresa = request.getParameter("empresa");
%>

<html>
<head>
 <title>Teste</title>
</head>
<body bgcolor="white">
<form method="post" action="load.jsp"> <!-- chama a própria página -->
<table>
 <tr>
  <td>
   <select name="empresa" onChange="this.form.submit();">
    <option value=""></option>
<%
 Iterator it = empresas.iterator();
 while( it.hasNext() ) {
   String emp = (String) it.next();
%>
    <option value="<%=emp%>" <%= emp.equals(empresa) ? "selected" : "" %>><%=emp%></option>
<%
 }
%>
   </select>
  </td>
  <td>
   <select name="funcionario">
    <option value=""></option>
<%
 if( empresa != null && empresa.length()>0 ) {
 List funcs = (List) funcionarios.get( empresa );
 Iterator it2 = funcs.iterator();
 while( it2.hasNext() ) {
   String func = (String) it2.next();
%>
    <option value="<%=func%>"><%=func%></option>
<%
   }
 }
%>
   </select>
  </td>
 </tr>
</table>
</form>
</body>
</html>
danieldestro

Eu mesmo não recomendo o esquema usado acima.

Tente usar um Framework MVC, ou mesmo um Servlet que executa o negócio e manda pro JSP os dados para exibição.

Faça uso das Tags (taglibs) para exibir os dados, ao invés de usar scriptlets.

Criado 2 de abril de 2004
Ultima resposta 2 de abr. de 2004
Respostas 9
Participantes 4