Problema para recuperar o valor do ID de um COMBOBOX

4 respostas
gabriel.coelho

Bom dia pessoal, preciso de uma ajuda de algum de vcs…

No meu projeto, estou trabalhando puramente com JAVA, sem utilização de frameworks…preciso de uma ajuda que não envolva framework, por favor.

Tenho 3 selects (combobox) na minha jsp que na qual estou precisando recuperar o ID selecionado através da minha servlet.
Colocarei um exemplo de como estou populando os combos, estou postando o select “veiculo”

<select name="veiculo"> <option value="1">----------Selecione um veículo-----------</option> <% ArrayList listaVeiculo = (ArrayList)request.getAttribute("veiculo"); Iterator iteraVeiculo = listaVeiculo.iterator(); while(iteraVeiculo.hasNext()){ Veiculo veiculo = (Veiculo) iteraVeiculo.next(); %> <option value="<%= veiculo.getId() %>"><%= veiculo.getDescricao()%> </option> <% } %> </select>

Como fazer para que, quando o usuário selecionar um valor, eu possa recuperar o ID do valor selecionado de forma numerica?

De inicio achei que estaria certo utilizando o getParameter e realizando um parseInt, mas não esta funcionando assim:

String veiculoId = request.getParameter("veiculo");
       
        String localOrigem = request.getParameter("localOrigemCidade");
       
        String localDestino = request.getParameter("localDestinoCidade");

            //Verifica se os atributos são nulos e salva o Veiculo
            if(veiculoId != null || !veiculoId.equals("")){
                veiculoAtividade.setId(Integer.parseInt(request.getParameter("veiculo")));

            if(localOrigem != null || !localOrigem.equals(""))
                veiculoAtividade.setLocalOrigemId(Integer.parseInt(request.getParameter("localOrigemCidade")));

            if(localDestino != null || !localDestino.equals(""))
                veiculoAtividade.setLocalOrigemId(Integer.parseInt(request.getParameter("localDestinoCidade")));

Será q alguém sabe me dizer a maneira certa de fazer isso??

4 Respostas

Don

Qual é o erro que está dando?

isso daqui:

<option value="<%= veiculo.getId() %>"><%= veiculo.getDescricao()%> </option>

não deveria ser algo assim:

<option value=""+<%= veiculo.getId()%>+""><%= veiculo.getDescricao()%> </option>

??

gabriel.coelho

Na verdade…ele só lança a exception, quando tenta ler o parseInt da combo LocalOrigemCidade e a LocalOrigemDestino, pois ao invés de vir o id das cidades, o valor vem como “true”.

Estou postando os valores que me retornando após realizar o getParameter em cada um deles, pra ver se ajuda:

Veiculo: 0 //Deveria aparecer ‘2’, pois o veiculo selecionado, foi de id = 2;
ORIGEM: true //Deveria aparecer 27, pois o id de são paulo em nosso banco é 27
DESTINO: true //Deveria aparecer 27, pois o id de são paulo em nosso banco é 27

Essa exception foi lançada, pq estou tentando realizar um parseInt em um valor booleano, que esta sendo retornado no combo ORIGEM e no DESTINO. Mas não deveria retornar um booleano. Muito estranho cara.

- Servlet.service() for servlet ApontamentoAtividadeInserirServlet threw exception
java.lang.NumberFormatException: For input string: “true”

Don

faz tempo que não mecho com JSP…mas acho que você esta populando a combo de forma errada…

tenta o seguinte:

<select name="veiculo">   
        <option value="1">----------Selecione um veículo-----------</option>
               <%
                   ArrayList listaVeiculo = (ArrayList)request.getAttribute("veiculo");
                    Iterator iteraVeiculo = listaVeiculo.iterator();
                    while(iteraVeiculo.hasNext()){
                    Veiculo veiculo = (Veiculo) iteraVeiculo.next();
                %>
                <option value=''+<%=veiculo.getId() %>+''><%= veiculo.getDescricao()%> </option>
                <%
                     }
                %>
</select>
gabriel.coelho

Não…o problema não é esse.

O foda é q to tentando pensar uma maneira de pelo menos visualizar esse id. Muito estranho ele retornar ‘0’.
Sera que no momento em q to populando, o iterator nao ta recuperando o id do banco??

Mas é estranho, pq estou fazendo um select * from, não estou especificando uma ou outra coluna…tem q trazer o id tbm.

Na sua opiniao, a estrutura da servlet esta correta?

Criado 5 de agosto de 2009
Ultima resposta 5 de ago. de 2009
Respostas 4
Participantes 2