2016-06-23 117 views
-1

我有一個名單,我想從列表中選擇一個選項,然後發送ID到一個servlet,然後在數據庫中插入ID:如何從列表中獲取ID?

這是我送的數據名稱的JSP,

<label class="etiqueta">Costumer:</label> 
<% Conexion conex = new Conexion(); 
    String URL = conex.URL; 
    String USERNAME = conex.USERNAME; 
    String PASSWORD = conex.PASSWORD; 
    Connection conexion = null; 
    try { 
     Statement sentencia = null; 
     ResultSet resultado = null; 
     conexion = DriverManager.getConnection(URL, USERNAME, PASSWORD); 
     if (!conexion.isClosed()) { 
      sentencia = conexion.createStatement(); 
      resultado = sentencia.executeQuery("select name,a_Paterno,a_Materno from person where rol='costumer'"); 
      out.println("<select style='width:300px;border:1px;font-family:sans-serif;font-size:16px;'name='cliente'"); 
      out.println("<option>Select costumer</option>"); 
      while (resultado.next()) { 
       String name = resultado.getString("name"); 
       out.println("<option value='" + name + "'>" + name + "</option>"); 
      } 
      out.println("</select>"); 
      conexion.close(); 
     } else { 
      out.println("fallo"); 
     } 
    } catch (Exception e) { 
     out.println("error: " + e); 
     e.printStackTrace(); 
    } 
%> 

//// 這是我的servlet代碼

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    doGet(request, response); 
    PrintWriter out = response.getWriter(); 
    //int idcliente = Integer.parseInt(request.getParameter("¿¿¿¿id???")); 
    String fecha = request.getParameter("fecha"); 
    String actividad = request.getParameter("actividad"); 
    double horas = Double.parseDouble(request.getParameter("horas")); 

    out.println("<html>"); 
    out.println("<title></title>"); 
    out.println("Cliente: "+ "\n" +nombreCliente+ " Añadido Correctamente \n"+telefono+ "\n"); 
    out.println("<a href='main.jsp'>Volver</a>"); 
    out.println("</html>"); 

    Consultas con = new Consultas(); 
    con.insertActividad(fecha, actividad, horas); 
} 

回答

0

確保您要提交的值是選項的值value='"+id+"'

while(resultado.next()) 
{ 
String name= resultado.getString("name"); 
int id= resultado.getInt("id"); 
out.println("<option value='"+id+"'>"+name+"</option>"); 
} 

在servlet來獲得所選選項的值,你這樣做:

int idcliente = Integer.parseInt(request.getParameter("cliente")); 

可以設定值= 0空的選項,以避免解析異常

out.println("<option value ='0'>Select costumer</option>"); 

或者你測試在解析爲int之前request.getParameter("cliente")是否爲空。

+0

謝謝兄弟! –

+0

不客氣。 –

0

您的ID不是數字,而是您在數據庫查詢中檢索到的name,在您的組合框中包含value。所以,試試這個:

// JSP

//..... 
    resultado = sentencia.executeQuery("select name,a_Paterno,a_Materno from person where rol='costumer'"); 
    out.println("<select style='width:300px;border:1px;font-family:sans-serif;font-size:16px;'name='cliente'"); 
    out.println("<option value=\"NOMBRE_VACIO\">Select costumer</option>"); 
    while (resultado.next()) { 
     String name = resultado.getString("name"); 
     out.println("<option value='" + name + "'>" + name + "</option>"); 
     } 
    out.println("</select>"); 
    //..... 

// Servlet的

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    doGet(request, response); 
    PrintWriter out = response.getWriter(); 
    String nombreCliente = request.getParameter("client"); // Nombre seleccionado en la combobox "client" 
    String fecha = request.getParameter("fecha"); 
    String actividad = request.getParameter("actividad"); 
    double horas = Double.parseDouble(request.getParameter("horas")); 

    if (!"NOMBRE_VACIO".equals(nombreCliente)) { 
     out.println("<html>"); 
     out.println("<title></title>"); 
     out.println("Cliente: "+ "\n" +nombreCliente+ " Añadido Correctamente \n"+telefono+ "\n"); 
     out.println("<a href='main.jsp'>Volver</a>"); 
     out.println("</html>"); 

     Consultas con = new Consultas(); 
     con.insertActividad(fecha, actividad, horas); 
    } 
} 

你必須決定是否選擇沒有名字做什麼。如果我是你,我會禁用提交按鈕,直到選擇一個有效的名字。