E ae fera é o seguinte...
Não consegui fazer um exemplo aqui web por falta de tempo mesmo...
Mas da pra ajudar.
É assim... você terá uma lista de produtos no qual será responsavel pelo preenchimento do seu combo.
Ai é o seguinte...
Classe Produto.java
Segue o código...
public class Produto {
private Long id;
private String descricao;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
Classe Teste.java
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Teste {
public static void main(String[] args) {
//Esta lista será sua lista de produtos, que creio eu já está funcionando.
List<Produto> listaProduto = new ArrayList<Produto>();
//Esta será sua lista de produtos adicionados que será a que você irá mostrar no dataTable.
List<Produto> listaAdicionada = new ArrayList<Produto>();
//Só adicionei os produtos para realizar o teste.
Produto prod1 = new Produto();
prod1.setId(1L);
prod1.setDescricao("Mouse Pad");
listaProduto.add(prod1);
Produto prod2 = new Produto();
prod2.setId(2L);
prod2.setDescricao("Notebook");
listaProduto.add(prod2);
Produto prod3 = new Produto();
prod3.setId(3L);
prod3.setDescricao("Processador");
listaProduto.add(prod3);
//Este metodo será responsavel por adicionar na sua dataTable e remover da sua combo.
for (Iterator iterator = listaProduto.iterator(); iterator.hasNext();) {
Produto prod = (Produto) iterator.next();
//Aqui no caso você vai verificar se o id ou descricao é a selecionada no combo.
if(prod.getId().equals(2L)){
//Vai adicionar na lista nova.
listaAdicionada.add(prod);
//Remover da lista antiga. Obs. Só conseguira remover se usar iterator.
iterator.remove();
}
}
//Só coloquei isto aqui para ver o resultado.
for(Produto produtos : listaProduto){
System.out.println("Produtos: " + produtos.getId() + " " + produtos.getDescricao());
}
//Só coloquei isto aqui para ver o resultado.
for(Produto prod : listaAdicionada){
System.out.println("Lista: " + prod.getId() + " " + prod.getDescricao());
}
}
}
No caso é assim. Você vai ter o botão, quando clicar ele vai ter que ir para o for. Verificar atualizar as listas e voltar. Para isto usa o a4j:commandButton.
Ele tem uma opção chamda reRender que é para dar o refresh no seu formulário. Ai quando clicar ele executa a action e atualiza tanto combo quanto tabela.
Se quiser o exemplo todo tals eu posso fazer amanhã.
Caso tenha dúvida é só postar...
Ta meio simples e sem estruturação mas é para você entender o que deve ser feito.
Abraço espero ter ajudado.