Como transferir elementos de uma lista p/ outra, c/ JSF ?  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Java-Cachaça
Debugger
[Avatar]

Membro desde: 14/04/2005 13:37:10
Mensagens: 55
Localização: Canoas - RS
Offline

Colegas,
Tenho duas listas(lado a lado) em uma página:



Eu gostaria de transferir elementos de uma lista para outra..
Como fazer isto com JSF ?

Alguém teria um exemplo, link ou qualquer coisa ?


Atenciosamente,
===========================================================
Leandro Severino - Analista Desenvolvedor
www.lstecnologia.com.br - Conhecimento e Profissionalismo.
Blog: http://www.lstecnologia.com.br/page/blog/blog.faces
===========================================================



"Quanto maior o nosso conhecimento, maior a compreensão da nossa ignorância."
[WWW] [MSN]
muldon
JavaTeenager
[Avatar]

Membro desde: 16/05/2006 14:06:03
Mensagens: 174
Offline

Eu fiz esse componente em JSF, pois precisava exatamente dessa funcionalidade. Entao, eu fiz o seguinte: criei duas listas como atributos de classe tipo:
public ArrayList<Pessoa> clientes;
public ArrayList<Pessoa> selecionados;

Entao, ao clicar no botao adicionar pessoa, eu acionava um procedimento no backbean, que recebia como parametro o nome dessa pessoa e retirava ela da primeira lista e colocava na segunda. Como eu nao sabia como passava o id ao inves do nome, eu criei um metodo, tipo: searchByName(String nome, ArrayList<Pessoa> lista, boolean remover) , onde se remover fosse true, ele retirava o elemento da lista e inseria na outra, global.
O mesmo acontecia com os botoes addAll e removeAll, so que com todos os elementos....
Nao sei se ajudou muito, mas so nao te dou mais detalhes pq nao lembro muito bem como implementei isso ha dois meses atras.

Sun Certified Java Programmer 5
Java-Cachaça
Debugger
[Avatar]

Membro desde: 14/04/2005 13:37:10
Mensagens: 55
Localização: Canoas - RS
Offline

Muldon,
Pois eh, o meu problema ta em fazer passar o ID para o metodo.

Mas eu tinha chegado nessa mesma lógica que tu chegastes.

De qualquer forma, muito obrigado pela ajuda.

Atenciosamente,
===========================================================
Leandro Severino - Analista Desenvolvedor
www.lstecnologia.com.br - Conhecimento e Profissionalismo.
Blog: http://www.lstecnologia.com.br/page/blog/blog.faces
===========================================================



"Quanto maior o nosso conhecimento, maior a compreensão da nossa ignorância."
[WWW] [MSN]
Java-Cachaça
Debugger
[Avatar]

Membro desde: 14/04/2005 13:37:10
Mensagens: 55
Localização: Canoas - RS
Offline

Opa,
Lá vai a solução:

No teu BackingBean:
[code]

private ArrayList listaDeSociosSemCarteira = new ArrayList();
private ArrayList listaDeSociosSelecionados = new ArrayList();

private String[] selectedListaDeSociosSemCarteira;
private String[] selectedListaDeSociosSelecionados;

// Getters e Setters.....

// Daqui pra ca, os metodos que movimento os itens e o metodo que gera a lista.

public void moveTodos(ActionEvent actionEvent){
getListaDeSociosSelecionados().addAll(getListaDeSociosSemCarteira());
getListaDeSociosSemCarteira().clear();
}
public void removeTodos(ActionEvent actionEvent){
getListaDeSociosSemCarteira().addAll(getListaDeSociosSelecionados());
getListaDeSociosSelecionados().clear();
}
public void moveSelecionado(ActionEvent actionEvent){
String[] values = getSelectedListaDeSociosSemCarteira();
int length = values.length;
for (int i=0; i<length; i++) {
String value = values[i];
getListaDeSociosSelecionados().add(removeItem(value, getListaDeSociosSemCarteira()));
}
}
public void removeSelecionado(ActionEvent actionEvent){
String[] values = getSelectedListaDeSociosSelecionados();
int length = values.length;
for (int i=0; i<length; i++) {
String value = values[i];
getListaDeSociosSemCarteira().add(removeItem(value, getListaDeSociosSelecionados()));
}
}
private SelectItem removeItem(String value, List items) {
SelectItem result = null;
int size = items.size();
for (int i=0; i<size; i++) {
SelectItem item = (SelectItem) items.get(i);
if (value.equals(item.getValue())) {
result = (SelectItem) items.remove(i);
break;
}
}
return result;
}
public void gerar(ActionEvent actionEvent){
List lista = mgr.getSociosSemCarteira();
ArrayList<SelectItem> listaSocios = new ArrayList<SelectItem>();
Iterator it = lista.iterator();
while ( it.hasNext()){
Socio socio= (Socio)it.next();
listaSocios.add(new SelectItem(socio.getId().toString(),socio.getNome()));
}
this.setListaDeSociosSemCarteira(listaSocios);
}
[/code]

Na página:

[code]
<h:form id="wizardCarteira">
<div align="center">
<h:commandButton value="#{messages['wizardCarteira.gerarRelacaoCarteira']}" actionListener="#{wizardCarteira.gerar}" id="gerar" immediate="true"/>
<h:commandButton value="#{messages['wizardCarteira.imprimirRelacaoCarteira']}" actionListener="#{wizardCarteira.imprimirRelacaoCarteira}" id="imprimir"/>
</div>
<br/>
<h:panelGrid columns="3" cellspacing="0" border="1">
<h:selectManyListbox id="sociosSemCarteira" value="#{wizardCarteira.selectedListaDeSociosSemCarteira}" style="width: 250px;height: 250px;">
<f:selectItems value="#{wizardCarteira.listaDeSociosSemCarteira}"/>
</h:selectManyListbox>
<h:panelGrid columns="1">
<h:commandButton value="#{messages['wizardCarteira.moveSelecionado']}" actionListener="#{wizardCarteira.moveSelecionado}" id="moveSelecionado" style="width: 30px;"/>
<h:commandButton value="#{messages['wizardCarteira.removeSelecionado']}" actionListener="#{wizardCarteira.removeSelecionado}" id="removeSelecionado" style="width: 30px;"/>
<h:commandButton value="#{messages['wizardCarteira.moveTodos']}" actionListener="#{wizardCarteira.moveTodos}" id="moveTodos" style="width: 30px;"/>
<h:commandButton value="#{messages['wizardCarteira.removeTodos']}" actionListener="#{wizardCarteira.removeTodos}" id="removeTodos" style="width: 30px;"/>
</h:panelGrid>
<h:selectManyListbox id="sociosSelecionados" value="#{wizardCarteira.selectedListaDeSociosSelecionados}" style="width: 250px;height: 250px;">
<f:selectItems value="#{wizardCarteira.listaDeSociosSelecionados}"/>
</h:selectManyListbox>
</h:panelGrid>
</h:form>
[/code]


Atenciosamente,
===========================================================
Leandro Severino - Analista Desenvolvedor
www.lstecnologia.com.br - Conhecimento e Profissionalismo.
Blog: http://www.lstecnologia.com.br/page/blog/blog.faces
===========================================================



"Quanto maior o nosso conhecimento, maior a compreensão da nossa ignorância."
[WWW] [MSN]
Kleber-rr
Virtual Machine Man
[Avatar]

Membro desde: 02/07/2009 12:12:02
Mensagens: 664
Offline

[quote=Java-Cachaça]Opa,
Lá vai a solução:

No teu BackingBean:
[code]

private ArrayList listaDeSociosSemCarteira = new ArrayList();
private ArrayList listaDeSociosSelecionados = new ArrayList();

private String[] selectedListaDeSociosSemCarteira;
private String[] selectedListaDeSociosSelecionados;

// Getters e Setters.....

// Daqui pra ca, os metodos que movimento os itens e o metodo que gera a lista.

public void moveTodos(ActionEvent actionEvent){
getListaDeSociosSelecionados().addAll(getListaDeSociosSemCarteira());
getListaDeSociosSemCarteira().clear();
}
public void removeTodos(ActionEvent actionEvent){
getListaDeSociosSemCarteira().addAll(getListaDeSociosSelecionados());
getListaDeSociosSelecionados().clear();
}
public void moveSelecionado(ActionEvent actionEvent){
String[] values = getSelectedListaDeSociosSemCarteira();
int length = values.length;
for (int i=0; i<length; i++) {
String value = values[i];
getListaDeSociosSelecionados().add(removeItem(value, getListaDeSociosSemCarteira()));
}
}
public void removeSelecionado(ActionEvent actionEvent){
String[] values = getSelectedListaDeSociosSelecionados();
int length = values.length;
for (int i=0; i<length; i++) {
String value = values[i];
getListaDeSociosSemCarteira().add(removeItem(value, getListaDeSociosSelecionados()));
}
}
private SelectItem removeItem(String value, List items) {
SelectItem result = null;
int size = items.size();
for (int i=0; i<size; i++) {
SelectItem item = (SelectItem) items.get(i);
if (value.equals(item.getValue())) {
result = (SelectItem) items.remove(i);
break;
}
}
return result;
}
public void gerar(ActionEvent actionEvent){
List lista = mgr.getSociosSemCarteira();
ArrayList<SelectItem> listaSocios = new ArrayList<SelectItem>();
Iterator it = lista.iterator();
while ( it.hasNext()){
Socio socio= (Socio)it.next();
listaSocios.add(new SelectItem(socio.getId().toString(),socio.getNome()));
}
this.setListaDeSociosSemCarteira(listaSocios);
}
[/code]

Na página:

[code]
<h:form id="wizardCarteira">
<div align="center">
<h:commandButton value="#{messages['wizardCarteira.gerarRelacaoCarteira']}" actionListener="#{wizardCarteira.gerar}" id="gerar" immediate="true"/>
<h:commandButton value="#{messages['wizardCarteira.imprimirRelacaoCarteira']}" actionListener="#{wizardCarteira.imprimirRelacaoCarteira}" id="imprimir"/>
</div>
<br/>
<h:panelGrid columns="3" cellspacing="0" border="1">
<h:selectManyListbox id="sociosSemCarteira" value="#{wizardCarteira.selectedListaDeSociosSemCarteira}" style="width: 250px;height: 250px;">
<f:selectItems value="#{wizardCarteira.listaDeSociosSemCarteira}"/>
</h:selectManyListbox>
<h:panelGrid columns="1">
<h:commandButton value="#{messages['wizardCarteira.moveSelecionado']}" actionListener="#{wizardCarteira.moveSelecionado}" id="moveSelecionado" style="width: 30px;"/>
<h:commandButton value="#{messages['wizardCarteira.removeSelecionado']}" actionListener="#{wizardCarteira.removeSelecionado}" id="removeSelecionado" style="width: 30px;"/>
<h:commandButton value="#{messages['wizardCarteira.moveTodos']}" actionListener="#{wizardCarteira.moveTodos}" id="moveTodos" style="width: 30px;"/>
<h:commandButton value="#{messages['wizardCarteira.removeTodos']}" actionListener="#{wizardCarteira.removeTodos}" id="removeTodos" style="width: 30px;"/>
</h:panelGrid>
<h:selectManyListbox id="sociosSelecionados" value="#{wizardCarteira.selectedListaDeSociosSelecionados}" style="width: 250px;height: 250px;">
<f:selectItems value="#{wizardCarteira.listaDeSociosSelecionados}"/>
</h:selectManyListbox>
</h:panelGrid>
</h:form>
[/code]

[/quote]

Eae amigo, blz?
Estou precisando de uma ajuda sua...
Estou tentando utilizar o selectManyListBox, mas apanhando feito vira lata... mas tudo bem.
Estive olhando seu exemplo, mas gostaria de saber como vc faz para salvar os objetos selecionados no selectManyListbox no banco.

Agradeço a ajuda.

 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team