【问题标题】:How to get id from a list?如何从列表中获取 id?
【发布时间】:2016-06-23 07:33:50
【问题描述】:

我有一个列表,我想从列表中选择一个选项,然后将 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);
}

【问题讨论】:

    标签: java mysql jsp servlets


    【解决方案1】:

    确保您要提交的值是选项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"));
    

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

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

    或者你在解析为int之前测试request.getParameter("cliente")是否不为空。

    【讨论】:

    • 谢谢大哥!
    【解决方案2】:

    您的 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>");
        //.....
    

    // 小服务程序

    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);
        }
    }
    

    如果没有选择名称,您必须决定要做什么。如果我是你,我会禁用提交按钮,直到选择一个有效的名称。

    【讨论】: