listShuttle RichFaces

3 respostas
camarada_du

Bom dia Pessoal, eu tenho que usar o componente o RichFaces chamado listShuttle, eu consigo preencher as lista, porém não sei como capturar o valor das mesmas após a a transferência dos dados de um lado para o outro. Fiquei na dúvida se a lista deveria ser de selectItem ou poderia ser de qualquer tipo, outra coisa, é necessário um converter para capturar os valores? Seguem os fontes:

<h:form id="listShuttleForm">
				<rich:listShuttle sourceValue="#{listShuttleBean.listaCarroSource}" targetValue="#{listShuttleBean.listaCarroTarget}"
					var="item" copyControlLabel="Copiar" copyAllControlLabel="Copiar Todos" removeAllControlLabel="Remover Todos" 
					removeControlLabel="Remover" bottomControlLabel="Último" topControlLabel="Primeiro" downControlLabel="Descer" 
					upControlLabel="Subir" sourceRequired="false" targetRequired="false" >
					
					<h:column>
						<f:facet name="header">
							<h:outputText value="Carro"/>
						</f:facet>
						<h:outputText value="#{item.nome}"/>
					</h:column>
					
					<h:column>
						<f:facet name="header">
							<h:outputText value="Ano"/>
						</f:facet>
						<h:outputText value="#{item.ano}"/>
					</h:column>
				<a4j:support event="onlistchanged" />
				</rich:listShuttle>
				
				<h:commandButton value="Enviar" action="#{listShuttleBean.capturarValores}" />
				
			</h:form>

public class Carro implements Serializable {

	private static final long serialVersionUID = -8571586838886146385L;
	private Integer ano = null;
	private String nome = null;
	
	public Carro() {}

	public Integer getAno() {
		return ano;
	}

	public void setAno(Integer ano) {
		this.ano = ano;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}
	
}

public static List < Carro > carregarCarroSource() {
		List < Carro > lista = new ArrayList < Carro >();
		Carro carro = null;
		
		carro = new Carro();
		carro.setAno(2009);
		carro.setNome("Celta");
		lista.add(carro);
		
		carro = new Carro();
		carro.setAno(2008);
		carro.setNome("Pálio");
		lista.add(carro);
		
		carro = new Carro();
		carro.setAno(2010);
		carro.setNome("Uno");
		lista.add(carro);
		
		carro = new Carro();
		carro.setAno(1979);
		carro.setNome("TL");
		lista.add(carro);
		
		return lista;
	}
	
	public static List < Carro > carregarCarroTarget() {
		List < Carro > lista = new ArrayList < Carro >();
		Carro carro = null;
		
		carro = new Carro();
		carro.setAno(2005);
		carro.setNome("Golf");
		lista.add(carro);
		
		carro = new Carro();
		carro.setAno(2008);
		carro.setNome("Punto");
		lista.add(carro);
		
		carro = new Carro();
		carro.setAno(2010);
		carro.setNome("Ferrari");
		lista.add(carro);
		
		carro = new Carro();
		carro.setAno(2011);
		carro.setNome("Aston Martin");
		lista.add(carro);
		
		return lista;
	}

Obrigado

3 Respostas

L

A lista pode ser de qualquer tipo de objeto, o que vc selecionou e jogou do outro lado esta na targetList

camarada_du

Entendi, então, no meu caso eu preciso capturar os valores que restaram no sourceList e os que estão no targetList, isso deverá ser feito através da chamada por um button, como posso fazer isso? Vlw lgweb

camarada_du

Valeu pela força, eu consegui resolver o problema, faltava usar um converter para os tipos de dados que estava usando.

Criado 6 de abril de 2011
Ultima resposta 6 de abr. de 2011
Respostas 3
Participantes 2