如何解决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”的值。
根据这些假设,您需要纠正一些事情
-
BeneficiosDB.cargarBeneficio 应该在 BeneficiosDB.ListaBeneficios 之前从您的控制器调用。
-
你的 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 举报,一经查实,本站将立刻删除。