Duvida com Session + JSP [RESOLVIDO]

9 respostas
leandrosousas

Olá bom dia a todos.

Estou desenvolvendo uma pagina onde eu tenho uma lista de previsões que esta na Session “prev” conforme o codigo abaixo.
Preciso de uma ajuda para eu alterar o valor dessa session para o valor inputado pelo usuario.

<c:forEach var="prev" items="${prev}"> 
                     <td align="center">
                        <input type="text" name="prev3" size = 5 class="cxtext" value ="${prev.qtd_prv3}">
                     </td>    
                  </c:forEach>

Grato

9 Respostas

surfzera

Cara, acho que tem várias formas de fazer uma acho que seria mais ou menos assim:

no seu servlet :

meuTipo = (String) request.getParameter(“prev3”);
session.setAtribute(meuTipo):

leandrosousas

Ola surfzera obrigado pela ajuda.

Mas no meu caso é um ArrayList o “prev” como vou saber o indice que esta sendo alterado , e o valor da variavel meuTipo que você mostrou ira vir com o valor inicial pois não vi onde ${prev.qtd_prv3} recebe o valor do input

!

nel

Você pode adicionar um atributo “id” a sua tag input e preencher esse atributo da tag com o índice do seu foreach.
Mas não coloque o número somente, pois pode duplicar. Algo como “previndex-”+index. Entende ?

Ai, quando você der o submit, envie para o Servlet esse ID e basta fazer um lastIndexOf e pegar o índice da sua lista.

leandrosousas

Resolvi dessa forma não sei se foi isso que disse mas deu certo… Usei jQuery

JSP

<td align="center"><input type="text" name="prev1" size = 5 class="cxtext" value ="${prev.qtd_prv1}" onblur="atualiza(this.value,${prev.qtd_prv1}${prev.ordem})"> </td>

Javascript

function atualiza (vlNovo,vlAntigo,recno){        
        
        if ( vlNovo != vlAntigo )
       {
           $('#aaa').load("DigitacaoServlet?acao=alterar&valor="+vlNovo+"&id="+recno, {},function(data){
           });        
       }
           
    }

Servlet

int   id    = Integer.parseInt(request.getParameter("id"));
    float valor = Float.parseFloat(request.getParameter("valor"));
    HttpSession s        = request.getSession();
    ArrayList <Prevsite> previsao = (ArrayList<Prevsite>) s.getAttribute("prev");      
    previsao.get(id).setQtd_prv1(valor);
    s.removeAttribute("prev");
    s.setAttribute("prev", previsao);

O problema é que ao cada campo que ele alterar irei remover e criar novamente a Session com o novo valor não sei se vai impactar na perfomance, agora crio o botão abaixo para gravar e terei a session da forma que o cliente deixou.

Se alguem tiver uma forma melhor estou disposto a alterar sinto que ficou “gambiarra”… rsrsrsr

nel

O jQuery é excelente mesmo, mas não foi isso que pensei (o uso dele, ok).
Não precisa de evento ouvindo algo no input, tu não precisa disso somente no submit ? Ou tu é obrigado a tratar isso em algum event, com o “onblur” ?

leandrosousas

Na verdade eu carrego uma lista com alguns campos ja preenchidos e outra campos para ser editaveis e no Submit eu coloco o gravar informações, e com com Jquery ao ser editado o campo eu ja acerto na Session no Submit eu fico apenas para jogar os valores novos no BD.

nel

Eu considero isso um problema, pois trata-se de requisição ao servidor. Não é gambiarra, mas é uma má pratica.
Porque não usa esse mesmo método para ir gerando uma lista com os campos que foram alterados e ir marcando o índice, quando o usuário der submit tu sabe todos os índices que foram marcados e necessitam ser atualizados. Não fica mais coerente ? Sem falar que isso fica em uma única chamada ao servidor.

leandrosousas

Sim Nel muito obrigado pela ajuda vou tentar alterar e espero conseguir mas valeu mesmo pela ajuda !!! Salvaram minha vida …rsrsrsr

Bom dia a todos.

surfzera

surfzera:
Cara, acho que tem várias formas de fazer uma acho que seria mais ou menos assim:

<form id="meuForm" action="meuServlet" method="post" >     
    <c:forEach var="prev" items="${prev}">   
       <td align="center">  
          <input type="text" name="prev3" size = 5 class="cxtext" value ="${prev.qtd_prv3}">  
       </td>      
    </c:forEach> 
    <input id="btSubmit"  type="submit" value="Enviar"/>
</form>

no seu servlet :

meuTipo = (String) request.getParameter(“prev3”);
session.setAtribute(meuTipo):

Criado 13 de agosto de 2012
Ultima resposta 13 de ago. de 2012
Respostas 9
Participantes 3