Como manter valor da combobox após o refresh

8 respostas
C

Galera,
tenho uma página jsp com uma combo com alguns dados ara fazer pesquisa, porém quando a página atualiza o valor da combobox muda. como faço para manter esse valor??
tentei algumas formas do tipo abaixo, porém fica fixo apenas no primeiro valor que tem dentro da combo.

SERVLET:
String concessao = request.getParameter("concessao");
request.setAttribute("concessao", concessao);
PÁGINA JSP...
[code] <td><select name="concessao" id="concessao">
          <% for(concessionario c: listaConcessao){
             %><option  value="${concessao}" selected> <%= c.getNomeConcessao()%> </option>
   <%
   }
   %>
        </select>
[/code]

8 Respostas

drsmachado

Primeiramente, decida-se.
Ou usa EL/JSTL ou apenas scriptlet (o que não recomendo).
Segundo, não entendi a necessidade de recarregar a página.
Terceiro, para manter um valor, você precisa ter uma variável que mantenha o valor selecionado e, assim, ir comparando com cada elemento do array/collection, independente de utilizar scriptlet ou EL.

C

Bom primeiro, desculpe a confusão no código. Estou apreendendo agora jsp.
Segundo vou postar o servlet todo, para você entender a necessidade de carregar a página novamente:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String concessao = request.getParameter("concessao");
        String modelo = request.getParameter("modelo");
        String mes = request.getParameter("mes");
        String item = request.getParameter("item");
       // System.out.println(concessao);

        try {
      campanhaDaoMysql cDao = new campanhaDaoMysql();
            campanha campanha = new campanha();
      List<campanha> lista = cDao.listarTodasCampanhas(modelo,item,concessao,mes);
      request.setAttribute("validade",cDao.pesquisarValidade(mes, concessao).toString());
     // System.out.println(campanha.getValidade());
     
       request.setAttribute("concessao", concessao);
       request.setAttribute("modelo", modelo);
       request.setAttribute("item", item);
       
      request.setAttribute("listaCampanhas", lista);
     request.getRequestDispatcher("index.jsp").forward(request, response);

        } finally {
            out.close();
        }
    }

Terceiro, corrigi o código o colocar o valor da combo em uma variável, ( acredito que esteja correto dessa forma):

String nomeConcessao = (String)request.getAttribute("concessao");

você poderia postar um exemplo de como utilizar essa variável na combobox?

drsmachado

Então, ainda não entendi a necessidade de recarregar a página.
O que, exatamente e com detalhes, faz com que recarregar a página seja necessário?
Bom, aí vai, em scriptlet

String nomeConcessao = (String)request.getAttribute("concessao");  
<td><select name="concessao" id="concessao">  
<%

	for(concessionario c: listaConcessao){
		if(nomeConcessao.equals(c.getNomeConcessao())){
			%><option value="<%= c.getValorQueDeveSerSetado() %>" selected="selected"><%= c.getNomeConcessao() %></option><%
		}else{
			%><option value="<%= c.getValorQueDeveSerSetado() %>"><%= c.getNomeConcessao() %></option><%
		}
	}

%>
</select>

Em EL/JSTL

<td><select name="concessao" id="concessao">
<c:forEach items="listaConcessao" var="c">
	<c:if test="${c.nomeConcessao eq nomeConcessao}">
		<option value="${c.valorQueDeveSerSetado}" selected="selected">${c.nomeConcessao}</option>
	</c:if>
</c:forEach>
</select>

Se for utilizar JSTL, não esqueça das taglibs e dos jars.

C

Então é pq quando eu chamo o servlet, ele me executa a consulta e redireciona para o index novamente, quando volta para o index, o valor da combobox já alterou.

drsmachado

É um comportamento normal.
Eu sugiro, fortemente, que você tente aprender sobre ajax.
Facilitaria muito essa questão

C

É um comportamento normal.
Eu sugiro, fortemente, que você tente aprender sobre ajax.
Facilitaria muito essa questão

Acredito que ajudaria muitoo mesmo…

Cara valeu vou ver o que consigo aqui.

drsmachado

É um comportamento normal.
Eu sugiro, fortemente, que você tente aprender sobre ajax.
Facilitaria muito essa questão

Acredito que ajudaria muitoo mesmo…

Cara valeu vou ver o que consigo aqui.
Vou ver se posto um exemplo simples, aí te ajudará.

Abraço.

C

É um comportamento normal.
Eu sugiro, fortemente, que você tente aprender sobre ajax.
Facilitaria muito essa questão

Acredito que ajudaria muitoo mesmo…

Cara valeu vou ver o que consigo aqui.
Vou ver se posto um exemplo simples, aí te ajudará.

Abraço.

Puts vai me ajudar muitoo…
Fico no aguardo.

Criado 19 de dezembro de 2011
Ultima resposta 19 de dez. de 2011
Respostas 8
Participantes 2