Ajuda a4j:commandLink e Seam

2 respostas
Marques

Colegas,

Tenho o form e a classe abaixo.
Quando clico no a4j:commandLink ele executa o método lojaAction.teste porém sempre com o primeiro objeto da tabela.
Ou seja, o

não está atualizado o selectedProduto

O que estou fazendo de errado?

Muito obrigado,

Marques

<a4j:form>
		<rich:dataGrid value="#{lojaAction.produtos}" var="produto"
			columns="3">
			<h:panelGrid columns="1" columnClasses="text_center" width="100%">
				<a4j:commandLink ajaxSingle="true" id="showDetalhe"
					action="#{lojaAction.teste}">
					<h:graphicImage value="#{produto.foto}" />
					<f:setPropertyActionListener value="#{produto}" target="#{lojaAction.selectedProduto}" />
				</a4j:commandLink>
			</h:panelGrid>
		</rich:dataGrid>
	</a4j:form>
@Name("lojaAction")
@Scope(ScopeType.SESSION)
public class LojaAction implements Serializable {

	@In
	private EntityManager em;

	@DataModel
	private List<Produto> produtos;
	
	@DataModelSelection
	@Out(required=false) 
	private Produto selectedProduto;
	
	public LojaAction() {}

	@Create
	@Factory("produtos")
	@SuppressWarnings("unchecked")
	public void populaProdutos() {
		produtos = em.createQuery("select p from Produto p").getResultList();
	}
	
	public void teste() {
		System.out.println("OOpsss teste: " + selectedProduto.getId() + " " + selectedProduto.getFoto());
	}

	public Produto getSelectedProduto() {
		return selectedProduto;
	}

	public void setSelectedProduto(Produto selectedProduto) {
		this.selectedProduto = selectedProduto;
	}

	public List<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}		
}

2 Respostas

Marques

Ninguém???

Batney

Você já tentou usar @DataModelSelection(“produtos”)?

Criado 24 de janeiro de 2011
Ultima resposta 24 de jan. de 2011
Respostas 2
Participantes 2