微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Web MVC 更新

如何解决Java Web MVC 更新

我正在学习 Java CRUD 操作。我正在尝试从 sql 数据库更新记录。插入和显示所有记录的方法正在运行,但问题是当我点击更新时什么也没有发生。

这是我用于更新的模态 HTML。

            <div id="myModal2" class="modal">
                <div class="modal-content">
                    <style type="text/css" media="screen">
                      .modal-content  {
                         width: 20%;
                         text-align: center;
                        }
                    </style>
                        <span class="close">×</span>
                        <h2 style="text-align: center";>Modificar un beneficio</h2>
                        <form action="MantenedorBeneficios" method="get" var="reg" items="${lista_beneficios}">
                            <input type="hidden" name="accion" value="cargar"/>
                            <label>Nombre Beneficio: </label>
                            <input type="hidden" name="id_beneficio" value="${reg.getId()}"/>
                            <input type="text" name="nombreBe" value="${reg.getnombre()}" />
                            <button type="submit" class="btn btn-success" > Modificar Beneficio </button>
                        </form>
                </div>
            </div>

这里是 CRUD 操作的数据访问代码

 public static List<RegistroMantenedorBeneficios> cargarBeneficio(){
    Connection conn = null;
    PreparedStatement stmt = null;
    List<RegistroMantenedorBeneficios> lista_registros = new ArrayList<RegistroMantenedorBeneficios>();
    RegistroMantenedorBeneficios registro = null;
    ResultSet rs = null;
    
    try{
        conn = c.Conectar();
        Statement stm = conn.prepareStatement("Select from * beneficio where id_beneficio=?");
        rs = stmt.executeQuery();                                      
          while (rs.next()) {
            registro = new RegistroMantenedorBeneficios();
            registro.id = rs.getInt("id");
            registro.nombre = rs.getString("nombre");
            registro.id_tipo = rs.getInt("id_tipo_beneficio");
            registro.vigente = rs.getBoolean("vigente");
            lista_registros.add(registro);
         
          }
    }
    catch (Exception ex){
        ex.printstacktrace(System.out);
        System.out.println(">>> Exception BeneficiosDB/InsertarNuevoBeneficio \n" + ex.getMessage());
    }
    finally{
        c.cerrarConexion(conn);
    }
    return lista_registros;
 }

这是 servlet 代码

protected void processRequest(HttpServletRequest request,HttpServletResponse response)
        throws servletexception,IOException {
    
    String accion = request.getParameter("accion");
    
    if (accion != null && accion.equals("vigencia")){
        int id_ben = Integer.parseInt(request.getParameter("id"));
        boolean is_vig = Boolean.parseBoolean(request.getParameter("bool"));
        
        BeneficiosDB.ActualizarVigenciaBeneficio(id_ben,is_vig);
    }
    
    if (accion != null && accion.equals("insertar")){
        String nombre = request.getParameter("nombreBe");
        int id_tipo = Integer.parseInt(request.getParameter("id_tipo"));
        int vigente = Integer.parseInt(request.getParameter("bool"));
        
        BeneficiosDB.InsertarNuevoBeneficio(nombre,id_tipo,vigente);
    }
    //not working
        if (accion != null && accion.equals("cargar")){
            int id = Integer.parseInt(request.getParameter("id_beneficio"));
            String nombre = request.getParameter("nombreBe");
            int id_tipo = Integer.parseInt(request.getParameter("id_tipo"));
            boolean vigente = Boolean.parseBoolean(request.getParameter("vigente"));
        
    }

    
    List<RegistroMantenedorBeneficios> registros_beneficios = BeneficiosDB.ListaBeneficios();
    //List<RegistroMantenedorBeneficios> registros_beneficioss = BeneficiosDB.cargarBeneficio();
    //request.setAttribute("lista_beneficioss",registros_beneficioss);
    request.setAttribute("lista_beneficios",registros_beneficios);
    request.getRequestdispatcher("Mantenedores/MantenedorBeneficios.jsp").forward(request,response);
}

解决方法

如果我理解你的问题,你正试图从模式更新记录,其中 id 是“id_beneficio”,因为只有一个可见字段,我假设它应该更新“nombreBe”的值。

根据这些假设,您需要纠正一些事情

  1. BeneficiosDB.cargarBeneficio 应该在 BeneficiosDB.ListaBeneficios 之前从您的控制器调用。

  2. 你的 sql 是一个普通的 select stmt 它需要更新 stmt 并且 您需要使用 stmt 设置 id_beneficio 和 nombreBe 的值 你的sql应该是

 update beneficio set nombreBe = ? where where id_beneficio=?
 stmt.setInt(nombreBe); // can be setString depending on your data-type.
 stmt.setInt(id_beneficio);

请在使用前验证一次更新查询。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?