Olá galera,
estou com um problema onde nao consigo capturar a lista de objetos de uma selectManyCheckbox e enviá-la para uma Action para ser gravada no banco.
essa é a minha checkbox no .xhtml:
<h:selectManyCheckbox id="listaDeSocios"
value="#{pessoaJuridicaAction.sociosSelecionados}" >
<f:selectItems id="itemDaListaDeSocios" value="#{pessoaJuridicaAction.socioSelecionado}" />
</h:selectManyCheckbox>
ao final do formulário, aonde a checkbox está contida, existe o seguinte botão:
<a4j:commandButton
value="Adicionar Sócios"
reRender="socios"
ajaxSingle="true"
action="#{pessoaJuridicaAction.adicionarVariosSocios}"
oncomplete="#{rich:component('socioPopup')}.hide();"> </a4j:commandButton>
e a minha action é a seguinte:
@Name("pessoaJuridicaAction")
@Scope(ScopeType.CONVERSATION)
public class PessoaJuridicaAction extends PessoaAction {
@In(required=false)
@Out(required=false)
PessoaJuridicaBean pessoaJuridicaBean;
@DataModel
List<PessoaJuridicaBean> empresas;
@DataModelSelection
PessoaJuridicaBean empresaSelecionada;
private String cnpj;
private PessoaFisicaBean socioSelecionado;
private List<PessoaFisicaBean> sociosSelecionados;
public PessoaJuridicaAction() {
sociosSelecionados = new ArrayList<PessoaFisicaBean>();
}
public String salvar() {
super.salvar(pessoaJuridicaBean);
return "voltar";
}
public void consultarPessoaJuridica() {
EntityQuery<PessoaJuridicaBean> query = new EntityQuery<PessoaJuridicaBean>();
List<String> where = new ArrayList<String>();
query.setEjbql("From PessoaJuridicaBean emp");
where.add("lower(emp.nome) like lower(concat('',#{pessoaJuridicaAction.nome},'%'))");
where.add("lower(emp.email) = lower(#{pessoaJuridicaAction.email})");
where.add("lower(emp.cnpj) = lower(#{pessoaJuridicaAction.cnpj})");
query.setRestrictionExpressionStrings(where);
empresas = query.getResultList();
}
public String selecionarPessoaJuridica() {
pessoaJuridicaBean = empresaSelecionada;
selecionarPessoa(pessoaJuridicaBean);
return "editarPessoaJuridica";
}
public void adicionarSocio(PessoaFisicaBean socio) {
pessoaJuridicaBean.addSocio(socio);
}
public void adicionarVariosSocios() {
for (int i = 0; i < this.sociosSelecionados.size(); i++) {
pessoaJuridicaBean.addSocio(sociosSelecionados.get(i));
}
}
public void testar(){
System.out.println("Teste");
}
public void excluirSocio(PessoaFisicaBean socio) {
pessoaJuridicaBean.removeSocio(socio);
}
public void limparSocios() {
pessoaJuridicaBean.getSocios().clear();
}
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public PessoaFisicaBean getSocioSelecionado() {
return socioSelecionado;
}
public void setSocioSelecionado(PessoaFisicaBean socioSelecionado) {
this.socioSelecionado = socioSelecionado;
}
public List<PessoaFisicaBean> getSociosSelecionados() {
return sociosSelecionados;
}
public void setSociosSelecionados(List<PessoaFisicaBean> sociosSelecionados) {
this.sociosSelecionados = sociosSelecionados;
}
public void alterListaDeSocios() {
sociosSelecionados.add(socioSelecionado);
}
}
Sinceramente, nunca trabalhei com esse cmponente - o selectManyCheckbox. - Já revirei o GUJ, mas a minha dúvida é, especificamente, como capturar a lista e gravar em um atributo da action para poder ser utilizado, e os tópicos que encontrei só explicam até a parte de montar o checkbox, dando ênfase à sintaxe dele e não mostram um exemplo de como seria o método de captura, que no meu caso é o adicionarVariosSocios().
Está correta a implementação do checkbox?
Alguém poderia me dar uma idéia de como eu poderia implementar esse método - adicionarVariosSocios()?