如何从列表中获取ID?

时间:2016-06-23 07:33:51

标签: java mysql jsp servlets

我有一个列表,我想从列表中选择一个选项,然后将id发送到servlet,然后在数据库中插入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);
}

2 个答案:

答案 0 :(得分:0)

确保您要提交的值是选项<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <table id="saptable"> <thead> <tr> <th>Item Name</th> <th>Item Code</th> <th>SAP Quantity</th> </tr> </thead> <tbody> <tr> <td> 121 </td> <td> register121 </td> <td> 34344 </td> </tr> <tr> <td> 222 </td> <td> register222 </td> <td> 78778 </td> </tr> </tbody> </table>

的值
value='"+id+"'

在servlet上获取所选选项的值,你会这样:

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

您可以为空选项设置值= 0以避免解析异常

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

或者在解析为int之前测试out.println("<option value ='0'>Select costumer</option>"); 是否为空。

答案 1 :(得分: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);
    }
}

如果没有选择名称,您必须决定该怎么做。如果我是你,我会禁用提交按钮,直到选择了有效名称。