Como capturar a lista de objetos de uma selectManyCheckbox

0 respostas
adrianoneres

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()?

Criado 22 de outubro de 2010
Respostas 0
Participantes 1