Selecionar produto na combobox e carregar preços em outra

Gostaria de ao selecionar o produto, carregasse outra combobox com os preços, utilizando javascript para fazer a requisição na servlet.

Vc precisará fazer uma requisição AJAX. Está usando algum framework javascript? Já tem a servlet criada?

Já utilizei o javascript básico, respondendo a outra pergunta, tenho a servlet, estou com dificuldade para via javascript captutar o id da select option e fazer a requisicao para servlet.

JSP

<div class="form-group col-md-4">
	<label for="exampleInputEmail1">Produto</label>
	
	<select class="form-control select2" style="width: 100%;"
			id="id_produto" name="id_produto" onchange="consultarPreco()">
			
		<option value="">Selecione</option>
		
		<c:forEach items="${produto}" var="product">
			<option value="${product.id}" id="${product.id}"
				<c:if test="${product.id == orcament.id_produto}">
					<c:out value = "selected=selected" />
				</c:if>>
				
				${product.descricao}
			</option>
		</c:forEach>
	</select>
</div>

<div class="form-group col-md-4">
	<label for="exampleInputEmail1">Preco</label>
	
	<select class="form-control select2" style="width: 100%;" id="id_preco" name="id_preco">
		<option value="">Selecione</option>
		
		<c:forEach items="${valores}" var="preco">
			<option value="${preco.id}" id="${preco.id}"
				<c:if test="${preco.id == orcament.id_preco}">
					<c:out value = "selected=selected" />
				</c:if>>
				
				${preco.tipo_preco} - ${preco.preco}
			</option>
		</c:forEach>
	</select>
</div>

Servlet

package servlet;

import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javafx.scene.input.DataFormat;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import beans.Orcamento;
import beans.Produto;
import dao.DaoOrcamento;
import dao.DaoProduto;

@WebServlet("/salvarOrcamento")
public class ServletOrcamento extends HttpServlet {
	private static final long serialVersionUID = 1L;

	private DaoOrcamento daoOrcamento = new DaoOrcamento();

	public ServletOrcamento() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String acao = request.getParameter("acao");
		String id_produto = request.getParameter("id_produto");

		try {
			RequestDispatcher view = request.getRequestDispatcher("/pages/orcamento.jsp");

			if (acao != null && acao.equalsIgnoreCase("listartodos")) {
				request.setAttribute("orcamentos", daoOrcamento.listar());
			} else if (acao != null && acao.equalsIgnoreCase("listartodosprod")) {
				RequestDispatcher view2 = request.getRequestDispatcher("/pages/cad_orcamento.jsp");
				request.setAttribute("produtos", daoOrcamento.listaProduto());
				//request.setAttribute("precos", daoOrcamento.consultaPreco(id_produto));
				view2.forward(request, response);
			} else if(acao!= null && acao.equalsIgnoreCase("consultarPreco")) {
				//RequestDispatcher view3 = request
				//.getRequestDispatcher("/pages/precos.jsp");
				request.setAttribute("valores", daoOrcamento.listaPreco(id_produto));
				//view3.forward(request, response);
			}
			
			if (!acao.equalsIgnoreCase("visualizar")) {
				request.setAttribute("cliente", daoOrcamento.listaCliente());
				request.setAttribute("produto", daoOrcamento.listaProduto());
				//request.setAttribute("valores",daoOrcamento.listaPreco());
				// DaoOrcamento.listaProduto());
				view.forward(request, response);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String acao = request.getParameter("acao");
		String id_produto = request.getParameter("valorParam");

		boolean podeInserir = true;

		try {
			String id = request.getParameter("id");
			String id_cliente = request.getParameter("id_cliente");
			//String id_produto = request.getParameter("id_produto");
			String data_inicial = request.getParameter("data_inicial");
			String data_final = request.getParameter("data_final");
			String dias = request.getParameter("dias");

			Orcamento orcamento = new Orcamento();
			orcamento.setId(!id.isEmpty() ? Long.parseLong(id) : null);
			orcamento.setId_cliente(Long.parseLong(id_cliente));
			orcamento.setId_produto(Long.parseLong(id_produto));
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Date datainicial = sdf.parse(data_inicial);
			Date datafinal = sdf.parse(data_final);
			orcamento.setData_inicial(datainicial);
			orcamento.setData_final(datafinal);
			orcamento.setDias(dias);

			if (id == null || id.isEmpty() && podeInserir) {
				daoOrcamento.salvar(orcamento);
			} else if(acao!= null && acao.equalsIgnoreCase("consultarPreco")) {
				//RequestDispatcher view3 = request
				//.getRequestDispatcher("/pages/precos.jsp");
				request.setAttribute("valores", daoOrcamento.listaPreco(id_produto));
				//view3.forward(request, response);
			}

			RequestDispatcher view = request.getRequestDispatcher("/pages/orcamento.jsp");
			request.setAttribute("orcamentos", daoOrcamento.listar());
			// request.setAttribute("msg", "Salvo com Sucesso");
			view.forward(request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Falai @rudgieri bom dia,
Teria como postar o código que fez em javascript?
Para pegar o id em javascript você poderia utilizar isso:

var combo = document.getElementById("id_produto");
var itemSelecionado = combo.options[combo.selectedIndex].value;

Abraços
Max

Com esse javascript consegui, quando seleciono o produto ele trás os preços corretamente, porém perde o produto selecionado no option, ou seja sempre q seleciono um produto e busco os precos ele retorna para o option padrão.

                <script type="text/javascript">
					function consultarPreco() {
						var produto = document.getElementById("id_produto").value;

				location.href = "http://localhost:8080/projeto-jsp/salvarOrcamento?acao=consultarPreco&id_produto="
								+ (produto);
					}
				</script>

Falai @rudgieri o que esta acontecendo é que na sua function consultarPreco voce esta usando um location.href que simplesmente redireciona a pagina para outro endereço e acaba “resetando” os campos preenchidos.
Qual o objetivo desse location.href ???

Abraços
Max

Com ele executo a ação “acao=consultarPreco” passando o id_produto para servlet.
Depois consulto no banco de dados todos os preços referentes a este id_produto e retorno para view.

Fala @rudgieri uma alternativa para voce não dar refresh na pagina seria essa consulta que realiza através do location.href fosse feita assincronamente através do JQuery, pois dessa forma só a combo de preços seria atualizada.

Abraços
Max