JavaScript + JSP

3 respostas
belmonte

tenho um jsp para cadastro de funcionários. Tenho textFields para código, nome, … Para o cadastro de funcionário, é necessário a inserção de um cargo. As descrições dos cargos cadastrados são carregados em um combo html (select).
minha dúvida é a seguinte: quando o usuário seleciona o combo, gostaria de carregar o código do cargo num textField. Para isso, coloquei no evento onChange do combo uma função JavaScript: carregaCodCargo(). No local reservado para o JavaScript, coloco o seguinte trecho:

<script>
function carregaCodCargo() {
  f = document.forms['form1'];
  f.txtCodCargo.value = <%=cVO.getCodCargo()%>;
}

porém o código aparece 0 (zero).
Sei que o JavaScript é executado antes do JSP. Gostaria de saber como faço para buscar os dados do cargo que quero, buscando pela descrição do cargo, que é o que tenho, já que carreguei no combo html.

grato,

3 Respostas

J

Esse trecho <%=cVO.getCodCargo()%>; vai ser “traduzido” para java e quando chamar a tela .jsp já vai vir o resultado.

Agora, por que está aparecendo zero só você poderá dizer.

Verifique a estrutura cVO e se realmente o método getCodCargo() está retornando o valor correto.

belmonte

Juliano, a classe cVO está funcionando. Na verdade tenho esse exemplo funcionando para desktop. Minha dúvida é com a mistura de JavaScript com JSP.
para desktop faço o seguinte no ActionPerformed do jComboBox1:

...
  ArrayList ColecaoVOs = new ArrayList();
  cVO.setDescricao(jComboBox1.getModel().getSelectedItem().toString());
  ColecaoVOs = cRN.PesquisarCargoDescricao(cVO);
  Iterator it = ColecaoVOs.iterator();
  if (it.hasNext()) {
    cVO = (CargoVO) it.next();
    jTextField5.setText(String.valueOf(cVO.getCodCargo()));
  }

o que acontece é que pego o que tenho selecionado no combo e passo como parâmetro para PesquisarCargoDescricao. Depois faço o jTextField5 receber o código do cargo (cVO.getCodCargo()).
o código abaixo está errado, mas dá a idéia do que quero fazer:

function carregaCodCargo() {
  f = document.forms['form1'];
<%
  cVO.setDescricao(%>f.select1.value<%); //aqui quero passar a descrição do que está selecionado no combo html para buscar o código...
  ColecaoVOs = cRN.PesquisarCargoDescricao(cVO);
  if (it.hasNext()) {
    cVO = (funcionario.CargoVO) it.next();
  }
%>
  f.txtCodCargo.value = <%=cVO.getCodCargo()%>;
}

mas não sei se rola misturar JavaScript com JSP… Não sei se me entende?!
atenciosamente,

J

Bom, javascript você pode usar até em Servlet, caso você precise ou quer programar de modo esdrúxulo.

Pra páginas JSP você com certeza vai usar javascript, dependendo do que tem que ser feito, não tem escapatória.

O que você está querendo fazer, nessa aplicação web, é buscar um código relativo a uma descrição em tempo de execução, daí, não vai ter jeito, ou você traz um array com todas os códigos já prontos da base, e os mantém num campo hidden ou submete a página só pra fazer essa consulta.

Eu poderia lhe indicar a tecnologia AJAX pra isso, seria uma mão na roda, mas você terá que estudar isso pra implementar. Funcionaria assim, ao trocar o valor da combobox uma requisição seria enviada ao servidor com o parâmetro descrição e retornaria o seu código sem dar o famigerado “refresh” na página toda.

Criado 2 de outubro de 2006
Ultima resposta 2 de out. de 2006
Respostas 3
Participantes 2