Funcionamento do ajax nativo JSF ou do Prime entre tabelas

Boa tarde,

Estou procurando entender o funcionamento do <f:ajax ou <p:ajax no JSF, não estou obtendo muito sucesso em minhas pesquisas pra fazer o que eu quero,
só acho exemplos do tipo com comandoButton e fazer o valor aparecer na tela… enfim são exemplos simples. Oque quero fazer e tambem quero saber se é possivel fazer
é por ex: um dataTable e um comandButton no final de cada linha, esses valores eu gostaria de transferi-los pra um outro dataTable, tipo simular um carrinho de compras
com o ajax, mas pra isso preciso entender como funciona e se da pra fazer a transferencia do valor entre as tabelas, a a partir de qual momento precisarei usar o 'AjaxBehaviorEvent’
no meu manageBean pra fazer a requisição… bem acho que deu pra entender… exemplos, sites, links qualquer coisa…

Obrigado, Abraço

Vou ser mais objetivo…

Essa é minha ultima coluna do DataTable principal, no caso a “vitrine” onde mostra todos o produtos

<p:column>
   				<h:commandButton image="../ref/imgs/carrinho.png" title="Adicionar ao Carrinho">
   					<p:ajax  event="click" update=":form:dtb" listener="#{vendaMB.addCarrinho}"/>
   				</h:commandButton>
   			</p:column>

O objetivo desse botão seria executar o metodo do MBean pra adicionar os dados da linha em outra DataTable, o id: ‘dtb’ do parametro update do <p:ajax/>
é o id da dataTable que estar recebendo essa lista Carrinho, só que obviamente ao clicar no botão é adicionado apenas uma linha em branco, minha duvida seria
como vou informa via ajax que é ‘aquela linha’(aquele produto) que quero adicionar na lista?

DataTable que esta recebendo a lista

<p:dataTable id="dtb" var="pdr" styleClass="datatable2" value="#{vendaMB.carrinho}">
   			<f:facet name="header">
   				Seu carrinho
   			</f:facet>
   			
   			<p:column headerText="Produto">
   				<h:outputText value="#{pdr.nome}" />
   			</p:column>
   			
   			<p:column headerText="Preço">
   				<h:outputText value="#{pdr.preco}" />
   			</p:column>
   		
   			<p:column headerText="Quantidade">
   			</p:column>
   		
   			<f:facet name="footer">
   				<p:commandButton value="Finalizar Compra">
   				</p:commandButton>
   			</f:facet>
   		
   		</p:dataTable>

MBean

public class VendaMB {
	
	private Produto produto;

	private List<Produto> carrinho;
	
	
	public VendaMB() {
		super();
		this.produto = new Produto();
		this.carrinho = new ArrayList<Produto>();
	}
	
	
	public void addCarrinho(AjaxBehaviorEvent event){
		this.carrinho.add(produto);
		produto = new Produto();
	}
[...]

Detalhe: se eu tiver me equivocado na ultilização de algum parametro ajax, não reparem pq ainda to entendendo o funcionamento do ajax na nativo jsf e do primeFaces…

Agradeço desde já, Abraço

Você pode fazer de 2 formas

assim:

 public void addCarrinho(Produto produto){  
        this.carrinho.add(produto);  
        produto = new Produto();  
    }

Supondo que seu produto esteja vindo de um componente tipo datalist ou datatable

<p:commandLink  title="Adicionar ao Carrinho" update=":form:dtb" action="#{vendaMB.addCarrinho(produto)}" >  
     <h:graphicImage src="../ref/imgs/carrinho.png"></h:graphicImage>
 </p:commandLink>

ou assim:

 public void addCarrinho(){  
        this.carrinho.add(produto);  
        produto = new Produto();  
    }

Supondo que seu produto esteja vindo de um componente tipo datalist ou datatable

<p:commandLink  title="Adicionar ao Carrinho" update=":form:dtb" action="#{vendaMB.addCarrinho()}" >  
<f:setPropertyActionListener target="#{vendaMB.produto}" value="#{produto}"> </f:setPropertyActionListener>
     <h:graphicImage src="../ref/imgs/carrinho.png"></h:graphicImage>
 </p:commandLink>

[quote=pauloph10]Você pode fazer de 2 formas

assim:

 public void addCarrinho(Produto produto){  
        this.carrinho.add(produto);  
        produto = new Produto();  
    }

Supondo que seu produto esteja vindo de um componente tipo datalist ou datatable

<p:commandLink  title="Adicionar ao Carrinho" update=":form:dtb" action="#{vendaMB.addCarrinho(produto)}" >  
     <h:graphicImage src="../ref/imgs/carrinho.png"></h:graphicImage>
 </p:commandLink>

ou assim:

 public void addCarrinho(){  
        this.carrinho.add(produto);  
        produto = new Produto();  
    }

Supondo que seu produto esteja vindo de um componente tipo datalist ou datatable

<p:commandLink title="Adicionar ao Carrinho" update=":form:dtb" action="#{vendaMB.addCarrinho()}" > <f:setPropertyActionListener target="#{vendaMB.produto}" value="#{produto}"> </f:setPropertyActionListener> <h:graphicImage src="../ref/imgs/carrinho.png"></h:graphicImage> </p:commandLink> [/quote]

Obrigado cara! funcionou certinho aqui. Pra ver como é né… sempre tentando faze da forma mais complicada e era só passa um parametro…
Mas ai vai uma ultima pergunta, eu sempre ouvi do ajax e da maravilha que ele é, onde ele seria necessario entrar? tipo eu ainda não consegui ver a ‘maravilha’ dele entende…
Agradeço mais uma vez pela atenção!