Enviar dados de um listbox para outro

Boa tarde,

Sou nova na área e preciso fazer uma página em que possuo dois listbox.
Os dois são populados com dados trazidos do banco.
Até ai tudo bem, o problema que não estou conseguindo passar de um listbox para outro
E depois disso preciso gravar os dados alterados numa tabela.
Alguém pode me ajudar por favor?

Segue meu código

pagina jsp

<h:form styleClass="form" id="form1">
		<TABLE>
			<TBODY>
				<TR>
					<TD>
					<TABLE>
						<TBODY>
							<TR>
								<TD align="left"><h:outputText
									value="#{pae012_List.pae004l2.diretoria}" id="lblDiretoria"></h:outputText></TD>
								<TD style="width: 5px"></TD>
								<TD><h:inputText value="#{pae012_List.cnclsusupex}"
									size="3" id="textcnclsusupex" styleClass="inputText"></h:inputText>
								<h:inputText value="#{pae012_List.nmclsusupex}" size="30"
									id="textnmclsusupex" styleClass="form-autocomplete"></h:inputText><h:inputHidden
									id="cnemp" value="#{pae012_List.cnemp}" /> <h:commandButton
									type="submit" styleClass="commandExButton" id="btProcurar"
									action="#{pae012_List.doBtnProcurarAction}"
									image="#{pae012_List.botoes.btProcurar}"></h:commandButton></TD>
							</TR>
							<TR>

								<TD colspan="3">
								<TABLE border="0" width="100%">
									<TBODY>
										<TR>
											<td><h:outputText id="lblTitulo2"
												value="#{pae012_List.pae004l2.sem}"></h:outputText></td>
											<td></td>
											<td align="right"><h:outputText id="lblTitulo3"
												value="#{pae012_List.pae004l2.com}"></h:outputText></td>
										</TR>
										<TR>
											<TD align="left"><h:selectManyListbox
												styleClass="selectManyListbox" id="lista1" size="8"
												value="#{pae012_List.selectedListaDeGerenciasSemDiretoria}">
												<f:selectItems
													value="#{pae012_List.listaDeGerenciasSemDiretoria}" />
											</h:selectManyListbox></TD>
											<TD width="5" align="center"><h:commandButton
												type="submit" styleClass="commandExButton" id="buttonVai"
												action="#{pae012_List.leftToRight}" value="Adiciona"></h:commandButton>
											<BR>
											&lt;h:commandButton
												type="submit" styleClass="commandExButton" id="buttonVolta"
												action="#{pae012_List.rightToLeft}" value="Remove"&gt;&lt;/h:commandButton&gt;
											&lt;/TD&gt;
											&lt;TD align="right"&gt;&lt;h:selectManyListbox
												styleClass="selectManyListbox" id="lista2" size="8"
												value="#{pae012_List.selectedListaDeGerenciasComDiretoria}"&gt;
												&lt;f:selectItems
													value="#{pae012_List.listaDeGerenciasComDiretoria}" /&gt;
											&lt;/h:selectManyListbox&gt;&lt;/TD&gt;
										&lt;/TR&gt;
									&lt;/TBODY&gt;
								&lt;/TABLE&gt;
								&lt;/TD&gt;
							&lt;/TR&gt;
						&lt;/TBODY&gt;
					&lt;/TABLE&gt;
					&lt;/TD&gt;
				&lt;/TR&gt;
			&lt;/TBODY&gt;
		&lt;/TABLE&gt;
	&lt;/h:form&gt;

arquivo java


private ArrayList&lt;SelectItem&gt; listaDeGerenciasSemDiretoria = new ArrayList();   
private ArrayList&lt;SelectItem&gt; listaDeGerenciasComDiretoria = new ArrayList();   

protected List selectedListaDeGerenciasSemDiretoria;
protected List selectedListaDeGerenciasComDiretoria;

//+getters and setters

public List&lt;SelectItem&gt; getAtualizaListaDeGerenciasComDiretoria() { 
		Connection con = DataBaseConn.getConn();
		try {
			
			PreparedStatement stmt = con
					.prepareStatement(" SELECT da tabela ");
			ResultSet rs = stmt.executeQuery();
			int cont = 0;
			while (rs.next()) {
				SelectItem si = new SelectItem();
				si.setValue(rs.getString("nmclsusupex"));
				si.setLabel(rs.getString("nmclsusupex"));
				listaDeGerenciasComDiretoria.add(si);
				cont++; //
			}
			rs.close();
			stmt.close();
		} catch (SQLException e) {
			setMensagem("" + e);
		} finally {
			try {
				con.close();
			} catch (SQLException e) {
			}
		}
		return listaDeGerenciasComDiretoria;
	}
	public List&lt;SelectItem&gt; getAtualizaListaDeGerenciasSemDiretoria() { 
		Connection con = DataBaseConn.getConn();
		try {
			PreparedStatement stmt = con
					.prepareStatement(" SELECT da tabela");
			stmt.setString(1, getCnemp());
			ResultSet rs = stmt.executeQuery();
			int cont = 0;
			while (rs.next()) {
				SelectItem si = new SelectItem();
				si.setValue(rs.getString("nmclsusupex"));
				si.setLabel(rs.getString("nmclsusupex"));
				listaDeGerenciasSemDiretoria.add(si);
				cont++; //
			}
			rs.close();
			stmt.close();
		} catch (SQLException e) {
			setMensagem("" + e);
		} finally {
			try {
				con.close();
			} catch (SQLException e) {
			}
		}
		return listaDeGerenciasSemDiretoria;
	}
	
	
	
	public String doBtnProcurarAction() {
		setMensagem("");
		getAtualizaListaDeGerenciasSemDiretoria();
		getAtualizaListaDeGerenciasComDiretoria();
		return "";
	}
	
	public String leftToRight() {
		if (selectedListaDeGerenciasSemDiretoria != null) {
			for (Iterator iter = selectedListaDeGerenciasSemDiretoria.iterator(); iter.hasNext();) {
				SelectItem selectItem = (SelectItem) iter.next();
				if (selectedListaDeGerenciasSemDiretoria.contains(selectItem.getValue())) {
					selectedListaDeGerenciasComDiretoria.add(selectItem);
					iter.remove();
				}
			}
			selectedListaDeGerenciasSemDiretoria.clear();
		}
		return "";
	}

	public String rightToLeft() {
		if (selectedListaDeGerenciasComDiretoria != null) {
			for (Iterator iter = selectedListaDeGerenciasComDiretoria.iterator(); iter.hasNext();) {
				SelectItem selectItem = (SelectItem) iter.next();
				if (selectedListaDeGerenciasComDiretoria.contains(selectItem.getValue())) {
					selectedListaDeGerenciasSemDiretoria.add(selectItem);
					iter.remove();
				}
			}
			selectedListaDeGerenciasComDiretoria.clear();
		}
		return "";
	}
	

por favor alguém ajude :cry:

Este seu MB é de sessão?
Você tem certeza de que está chamando o método do BackingBean?
Caso sim, você tem que renderizar os controles novamente, se vc. estiver utilizando o RichFaces, sugiro que ao inves de utilizar o <h:command, utlize o ><a4j:command

Infelizmente não pude ver o seu código linha a linha, mas estou apenas tentando repassar experiência que já tive…

Espero ter ajudado !>

Olá ivesbertoli
Obrigada por me responder, mas não estou usando sessão e nem rich faces

Esse post é um pouco antigo, provavelmente o autor nem precisa mais de ajuda.
Essa semana tive o mesmo problema, e não conseguia resolver.

O componente selectManyListBox envia para o java apenas o que está selecionado, e não a lista inteira dos valores.
Desta forma, do jeito que eu havia desenhado a tela, passando os valores de um pro outro por javascript, não funcionava, por que depois que eu passava os valores de um listbox para o outro, e clicava em “confirmar” só chegava no java os itens se eu os selecionasse, mas isso era inviável.

A solução que arrumei foi simples, eu parei de controlar as alterações no javascript e comecei a fazer isso no java, então quando o usuário selecionava algum iten da esquerda e clicava no botão “enviar para a direita” eu acionava um método, que recebia os itens que foram selecionados, removia do List da esquerda e adicionava no List da direita.

E enquanto essas alterações eram feitas eu criava um list de controle, para saber o que foi removido e o que foi adicionado.

Depois fica mais facil, quando clicar em confirmar, os Lists já estão prontos, é só tratar os arrays e mandar gravar as informações novas.