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;
}
}