Nao consigo gravar o resultado do checkbox no banco mysql

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