Será que alguém poderia por favor me ajudar com um probleminha que estou a 1 semana.
Criei uma página jsp com uma tabela e um formulário logo acima da tabela com alguns campos que são carregados quando selecionado algum tópico da tabela. Só que nesse formulário tem um campo checkbox que não esta funcionando como deveria.
Na tabela abaixo onde é selecionado os itens, tem um campo chamado “Ativo”, e esse campo pode ser “Sim” ou “Não”.
No Banco de Dados o “Sim” é representado pelo número “1” e o “Não” pelo número “0”.
Mas quando clico na opção que tem o “Sim”, ele checa direitinho no formulário, porém quando dou um “unchecked” e clico no botão alterar, ele não esta fazendo a alteração, a variável passa vazio. Quando faço o processo inverso a esse descrito acima, a alteração funciona.
Bom dia, até onde eu sei qdo vc da um “unchecked” essa informação não eh passada no request, ou seja, sempre vai ser null.
Eu tive esse problema tb e resolvi da seguinte forma: eu faço um teste na action q recebe esse checkbox qdo for null recebe 0.
V
vitorbonfim
Realmente esse detalhe eu não tinha me atentado. Mas vc poderia me dizer como fez esse teste na Action?
Eu coloquei alguns “System.out” para verificar se tinha algum conteúdo na variável, mas ela continua vindo “null”.
No meu Form, eu faço uma comparação do tipo:
Se for “SIM”
seto “1”
Senão
seto “0”
Obrigado.
L
leocribeiro
Testa primeiro se for null
if(variavel == null)
seta 0
V
vitorbonfim
Léo,
Esse aqui é o metodo de alteração que esta na minha Action.
//carregando o beanCadCanalVendaVOcanalVendaVO=newCadCanalVendaVO();System.out.println("CadCanalVendaAction - valor getValidado: "+canalVendaForm.getValidado());if(canalVendaForm.getValidado()==null){canalVendaVO.setValidado(0);}else{if(canalVendaForm.getValidadoTexto().equals("Sim")){canalVendaVO.setValidado(1);}else{canalVendaVO.setValidado(0);}}canalVendaVO.setCanalVenda(canalVendaForm.getCanalVenda());System.out.println("executaAlteracao canalVendaForm.naoUsarNoRAA: "+canalVendaForm.getValidado());//CadCanalVendaDAOcanalVendaDAO=newCadCanalVendaDAO();if(canalVendaDAO.alterar(canalVendaForm)){//executaAlteracao(mapping, form, request, response);returnmapping.findForward("success");}else{returnmapping.findForward("failure");}}
Esse comparação que vc escreveu, já fiz, mas infelizmente não adiantou.
Acho q com esse código vc poderá me ajudar melhor.
Mais uma vez obrigado.
L
leocribeiro
CadCanalVendaVOcanalVendaVO=newCadCanalVendaVO();System.out.println("CadCanalVendaAction - valor getValidado: "+canalVendaForm.getValidado());Stringvalidado=request.getParameter("nomeCheckBox");if(validado==null){canalVendaVO.setValidado(0);}else{canalVendaVO.setValidado(1);}
Tenta assim
V
vitorbonfim
Infelizmente não funcionou.
Estou enviando o resultado do meu log, não sei se vai ajudar muito.
CadCanalVendaAction: antes de listar
Entrou CadCanalVendaDAO
AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@c743eb)
LogAbandoned: false
RemoveAbandoned: true
RemoveAbandonedTimeout: 5
Antes da query
antes do while
depois do while
antes de fechar conexao.
depois de fechar conexao.
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaForm naoUsarNoRAA: 0
CadCanalVendaForm naoUsarNoRAA: 0
CadCanalVendaForm naoUsarNoRAA: 1
CadCanalVendaAction: depois de listar
CadCanalVendaAction: listaCadCanalVenda = false
CadCanalVendaAction - valor getValidado: null
executaAlteracao canalVendaForm.naoUsarNoRAA: null
CadCanalVendaDAO: Entrou CadCanalVendaDAO alterar.
null
2008-02-25
CadCanalVendaDAO: Antes da conexao.
CadCanalVendaDAO-codigo: 8
CadCanalVendaDAO-canalVenda: A. A. Compra e Venda
CadCanalVendaDAO-naoUsarNoRAATexto: null
CadCanalVendaDAO-naoUsarNoRAA: null
Exception: java.lang.NullPointerException
CadCanalVendaDAO: Fechando conexão.
Antes de chegar nessa linha “CadCanalVendaAction: depois de listar”, todos os valores estão preenchidos, mas logo depois disso, esta vindo tudo preenchido com “null”. Realmente não sei mais o q fazer. rs
Vamos ver se conseguimos agora com esse log postado.
Mais uma vez agradeço.
L
leocribeiro
Cara acho q eu comi barriga,
lah no if troca o troca o canalVendaVO.setValidado() por canalVendaForm.setValidado()…
V
vitorbonfim
Funcionou!!!
Nem acredito.
Léo, muito obrigado mesmo. Parece q tirei um peso das costas.
Estou começando com Java agora e já estou trabalhando com Struts, mas vou chegar lá.