Fala Renan, tudo bem ?
A princípio não é necessário nem a alternativa do @RequestParam
nem qualquer outra configuração adicional. O binding de um input checkbox é padrão no Spring. Só precisamos observar algumas coisas ...
Como está seu modelo ? Imagino que esteja mais ou menos assim: Empresa > Endereço > boolean checkEnderecoNotaFiscalBoleto (">" == tem um). Sendo assim verifique se a empresa tem o setter para endereço, e se endereço tem o setter para checkEnderecoNotaFiscalBoleto.
Fiz um teste rápido por aqui. Veja como ficou...
public class Empresa {
private Integer id;
private String nome;
private Endereco endereco;
//getters and setters necessários
public Endereco getEndereco() {
return endereco;
}
public void setEndereco(Endereco endereco) {
this.endereco = endereco;
}
@Override
public String toString() {
return "Empresa [id=" + id + ", nome=" + nome + ", endereco=" + endereco + "]";
}
}
package br.com.casadocodigo.loja.models;
public class Endereco {
private Integer id;
private String logradouro;
private boolean checkEnderecoNotaFiscalBoleto;
//getters and setters necessários
public boolean isCheckEnderecoNotaFiscalBoleto() {
return checkEnderecoNotaFiscalBoleto;
}
public void setCheckEnderecoNotaFiscalBoleto(boolean checkEnderecoNotaFiscalBoleto) {
this.checkEnderecoNotaFiscalBoleto = checkEnderecoNotaFiscalBoleto;
}
@Override
public String toString() {
return "Endereco [id=" + id + ", logradouro=" + logradouro + ", checkEnderecoNotaFiscalBoleto="
+ checkEnderecoNotaFiscalBoleto + "]";
}
}
Controller simples:
@Controller
public class EmpresaController {
@RequestMapping(value = "/empresa/form", method = RequestMethod.GET)
public String form() {
return "empresa/form";
}
@RequestMapping(value = "/empresa", method = RequestMethod.POST)
public String add(@Valid Empresa empresa) {
System.out.println(empresa);
return "redirect:/empresas/all";
}
}
form:
...
<body>
<form action="<c:url value='/empresa'/>" method="post">
Nome: <input type="text" name="nome" />
Endereço __________________________________
Logradouro: <input type="text" name="endereco.logradouro" />
<p class="col m3">
<input type="checkbox" name="endereco.checkEnderecoNotaFiscalBoleto" />
<label for="checkEnderecoNotaFiscalBoleto">Endereço nota fiscal / Boleto</label>
</p>
<input type="submit"/>
</form>
</body>
Resultado do binding:
Espero ter ajudado. Abraço!