Pessoal,
tenho num form um campo do tipo html:checkbox da seguinte forma:
<html:checkbox property="relatorio" style="styleFontePeqNegrito">Marcar para relatorio</html:checkbox>
e num bean que serve de actionform seu respectivo atributo do tipo Boolean
private Boolean relatorio;
public Boolean getRelatorio() {
return relatorio;
}
public void setRelatorio(Boolean relatorio) {
this.relatorio = relatorio;
}
Quando envio o formulario com o checkbox desmarcado, eu recebo o bean com o atributo false, e quando marco, ele vem true. até ai blz.
Mas quando eu desmarco o checkbox que estava marcado, ele continua vindo true!!
Alguem tem uma luz aih?
No Struts, os checkbox não são resetados automaticamente. Você deve forçar o boleano que está associado à action para false no método reset() do Form bean. O site abaixo discute sobre este problema.
http://jmatrix.net/dao/case/case.jsp?case=7F000001-D16FC1-100A671370A-71
Isso ocorre, pois, o Struts copia todos os dados da requisição http para o form associado na action. Ele faz isso fazendo a correspondência dos nomes no formulário HTML com os nomes no form bean. Mas, o protocolo http não envia os checkbox desmarcados na requisição, por isso, o struts não sabe que deve marcar o campo do checkbox para false. Então, você mesmo deve fazer isso no metodo reset() do form bean.