oi, pessoal mais uma vez preciso da ajuda de voces. Tenho uma aplicacao para controle de patrimonio, que desenvolvi usando springmvc + jsp + bootstrap + mysql, nela tenho um form de alteracao do “bem patrimonial”, que dentre alguns input existe 1 checkbox, mas nao consigo fazer o resultado dele gravar no banco mysql. Simplesmente nao acontece nada, entao vou ate o banco de dados e manualmente atribuo o valor de 1 (true) no campo, quando volto para o form e atualizo a pagina ele vai marcado atraves de EL value="${bem.tp_situacao}" e ficha [x] marcado, ou seja esta sendo recuperado do banco para o form corretamente, mas nao consigo do form gravar no banco. Alguem pode me ajudar ??
Amigo, seria um pouco mais fácil você colocar pra gente uma parte do seu código.
A sua JSP… A Classe responsável por efetuar de fato o cadastro no BD… tipo isso…
Não entendi o que você quis dizer… =[
abraços.
ok,
segue a VIEW, usando bootstrap
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html> <!-- defini que é HTML5-->
<c:import url="../cabecalho.jsp" />
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Controle Patrimonial</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="span12">
<form class="well" method="post" action="alteraBem">
<fieldset>
<legend>Altera Bem</legend>
<label>Codigo</label>
<input type="text" class="span3" value="${bem.cd_bem}" name="cd_bem" readonly="readonly">
<label>Bem</label>
<input type="text" class="span3" value="${bem.nm_bem}" name="nm_bem">
<label>Descrição</label>
<input type="text" class="span3" value="${bem.ds_bem}" name="ds_bem">
<label>Número Patrimonio</label>
<input type="text" class="span3" value="${bem.nr_patr}" name="nr_patr">
<label>Data de Cadastro</label>
<div class="input-append date" id="dp3" data-date="date" data-date-format="dd/mm/yyyy">
<input class="span2" size="16" type="text" value="${bem.dt_cad.time}" name="dt_cad">
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
<label>Marca</label>
<input type="text" class="span3" value="${bem.nm_marca}" name="nm_marca">
<label>Modelo</label>
<input type="text" class="span3" value="${bem.nm_modelo}" name="nm_modelo">
<label>Serie</label>
<input type="text" class="span3" value="${bem.nr_serie}" name="nr_serie">
<label>Grupo</label>
<select id="1" class="span6" name="cd_grupo">
<c:forEach items="${grupos}" var="grupo">
<c:if test="${bem.cd_grupo eq grupo.cd_grupo}">
<option value="${grupo.cd_grupo}" selected="selected">${grupo.nm_grupo}</option>
</c:if>
<c:if test="${bem.cd_grupo ne grupo.cd_grupo}">
<option value="${grupo.cd_grupo}">${grupo.nm_grupo}</option>
</c:if>
</c:forEach>
</select>
<label>Sub-Grupo</label>
<select id="1" class="span6" name="cd_subgrupo">
<c:forEach items="${subgrupos}" var="subgrupo">
<c:if test="${bem.cd_subgrupo eq subgrupo.cd_subgrupo}">
<option value="${subgrupo.cd_subgrupo}" selected="selected">${subgrupo.nm_subgrupo}</option>
</c:if>
<c:if test="${bem.cd_subgrupo ne subgrupo.cd_subgrupo}">
<option value="${subgrupo.cd_subgrupo}">${subgrupo.nm_subgrupo}</option>
</c:if>
</c:forEach>
</select>
<label>Origem</label>
<select id="1" class="span6" name="cd_origem">
<c:forEach items="${origens}" var="origem">
<c:if test="${bem.cd_origem eq origem.cd_origem}">
<option value="${origem.cd_origem}" selected="selected">${origem.nm_origem}</option>
</c:if>
<c:if test="${bem.cd_origem ne origem.cd_origem}">
<option value="${origem.cd_origem}">${origem.nm_origem}</option>
</c:if>
</c:forEach>
</select>
<label>Localização</label>
<select id="1" class="span6" name="cd_local">
<c:forEach items="${locais}" var="local">
<c:if test="${bem.cd_local eq local.cd_local}">
<option value="${local.cd_local}" selected="selected">${local.nm_local}</option>
</c:if>
<c:if test="${bem.cd_local ne local.cd_local}">
<option value="${local.cd_local}">${local.nm_local}</option>
</c:if>
</c:forEach>
</select>
<h4>Situação do Bem</h4>
<div class="well">
<div class="checkbox">
<c:if test="${bem.tp_situacao eq 0}">
<input type="checkbox" name="tp_situacao" value="0">Ativo
</c:if>
<c:if test="${bem.tp_situacao eq 1}">
<input type="checkbox" name="tp_situacao" value="2" checked>Ativo
</c:if>
</div>
</div>
<h4>Estado de Conservação</h4>
<div class="well">
<c:if test="${bem.tp_estado eq 0}">
<label class="radio">
<input type="radio" name="tp_estado" value="0" checked>Bom
</label>
<label class="radio">
<input type="radio" name="tp_estado" value="1">Ruimse
</label>
</c:if>
<c:if test="${bem.tp_estado eq 1}">
<label class="radio">
<input type="radio" name="tp_estado" value="0">Bom
</label>
<label class="radio">
<input type="radio" name="tp_estado" value="1" checked>Ruim
</label>
</c:if>
</div>
<label>Conta Contabil</label>
<input type="text" class="span3" value="${bem.cd_conta}" name="cd_conta">
<label>Foto (jpeg)</label>
<input type="image" src="imagens/imagem1.jpg" class="img-rounded" width="540" height="380" value="${bem.nm_foto}" name="nm_foto">
<br/>
<br/>
<br/>
<button class="btn btn-primary" type="submit">Confirma</button>
<button class="btn btn-danger" type="reset">Cancela</button>
</fieldset>
</form>
</div>
</div>
</div>
</body>
</html>
<c:import url="../rodape.jsp" />
agora o CONTROLLER:
@RequestMapping("alteraBem")
public String altera(BemModelo bem) {
BemDAO dao = new BemDAO();
dao.altera(bem);
return "bem/confirmado-bem";
}
e por ultimo a classe DAO:
public void altera(BemModelo bem) {
String sql = "update bem set nm_bem=?, ds_bem=?, nr_patr=?, dt_cad=?, nm_marca=?, nm_modelo=?, nr_serie=?, cd_grupo=?, cd_subgrupo=?, " +
"cd_origem=?, cd_local=?, tp_situacao=?, tp_estado=?, cd_conta=?, nm_foto=? where cd_bem=?";
PreparedStatement stmt;
try {
stmt = connection.prepareStatement(sql);
stmt.setString(1, bem.getNm_bem());
stmt.setString(2, bem.getDs_bem());
stmt.setString(3, bem.getNr_patr());
stmt.setDate(4, new Date(bem.getDt_cad().getTimeInMillis()));
stmt.setString(5, bem.getNm_marca());
stmt.setString(6, bem.getNm_modelo());
stmt.setString(7, bem.getNr_serie());
stmt.setInt(8, bem.getCd_grupo());
stmt.setInt(9, bem.getCd_subgrupo());
stmt.setInt(10, bem.getCd_origem());
stmt.setInt(11, bem.getCd_local());
stmt.setInt(12, bem.getTp_situacao());
stmt.setInt(13, bem.getTp_estado());
stmt.setString(14, bem.getCd_conta());
stmt.setByte(15, bem.getNm_foto());
stmt.setInt(16, bem.getCd_bem());
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(sql);
}
}
o jsp chama-se altera-bem.jsp quando ele é carregado as informacoes vem do banco corretas, mas se eu mudar o valor do checkbox, essa mudança não funciona
no banco de dados mysql.
Amigo,
na parte do seu checkbox, não seria interessante utilizar um RADIO… A situação pode estar ativa e não ativa ao mesmo tempo?.. Na checkbox é possível colocar os 2 ao mesmo tempo, não é isso?
Já testou a sua aplicação utilizando radio?
E eu encontrei algo que me parece um erro…
No código abaixo você compara se a situação for igual a 1 pede para que fique [color=red]CHECKED o checkbox com VALUE = “2”[/color]
Acredito que aqui esteja incoerente:
<c:if test="${bem.tp_situacao eq 1}">
<type="checkbox" name="tp_situacao" value="2" checked>Ativo
</c:if>
<h4>Situação do Bem</h4>
<div class="well">
<div class="checkbox">
<c:if test="${bem.tp_situacao eq 0}">
<input type="checkbox" name="tp_situacao" value="0">Ativo
</c:if>
<c:if test="${bem.tp_situacao eq 1}">
<input type="checkbox" name="tp_situacao" value="2" checked>Ativo
</c:if>
</div>
</div>
Veja se funcionou… Fico no aguardo.
Resolvido !!!
esse é o trecho de codigo da VIEW: que mudei
<h4>Situação do Bem</h4>
<div class="well">
<div class="checkbox">
<c:if test="${bem.tp_situacao eq 0}">
<input type="checkbox" name="tp_situacao" value="0" onClick="mudaCheck()">Ativo
</c:if>
<c:if test="${bem.tp_situacao eq 1}">
<input type="checkbox" name="tp_situacao" value="1" onClick="mudaCheck()" checked>Ativo
</c:if>
</div>
</div>
observe que fiz peguei uma funcao na internet e adaptei para minha necessidade: a funcao é "mudaCheck()"
segue abaixo o codigo dela.
<script type="text/javascript">
function mudaCheck(){
document.formAlteraBem.tp_situacao.value = 1 - document.formAlteraBem.tp_situacao.value;
if (documento.formAlteraBem.tp_situacao.value==1) {
document.formAlteraBem.tp_situacao.checked = true;
} else {
document.formAlteraBem.tp_situacao.checked = false;
}
}
</script>
obrigado a todos
como fecho o topico ?
[quote=wpm]como fecho o topico ?
[/quote]
Altera o assunto do seu tópico, só colocando: [RESOLVIDO] nao consigo gravar o resultado do checkbox no banco mysql
Entendeu?
obrigado a todos