Olá galera, estou com o seguinte problema, tenho uma dataTable que lista todos os itens de um Pedido.
Gostaria de fazer a seleção de um item X da minha dataTable e fazer algumas alteraçoes como: excluir ou editar o item selecionado.
Eu tenho um item em meu ManagedBean que receberia o valor do item selecionado e ai então, eu faria as alterações desejadas.
Porem, ao selecionar a linha do item, o valor do item selecionado não é passado p/ meu ManagedBean.
Como resolver esse problema?
Obs: o código está bastante grande, então vou colocar somente a parte do dataTable e o ManagedBean.
Obrigado a todos.
<p:dialog header="Editar Pedido" widgetVar="editarPedido" modal="true" showEffect="fade" appendToBody="true">
<h:panelGrid columns="2" cellpadding="5" id="editPedido">
<h:outputLabel for="fornecedor" value="Fornecedor: "></h:outputLabel>
<h:outputText id="nomeFornecedor" value="#{editarPedidoCompra.pedido.fornecedor.nome}"></h:outputText>
<h:outputLabel for="dataPedido" value="Data do Pedido"></h:outputLabel>
<h:outputText id="dataPedido" value="#{editarPedidoCompra.pedido.dataCompra}">
<f:convertDateTime locale="pt_BR"></f:convertDateTime>
</h:outputText>
</h:panelGrid>
<br/>
<p:dataTable id="itensPedido" var="item" value="#{editarPedidoCompra.listaItensPedido}" rowKey="#{item.id}"
selection="#{editarPedidoCompra.itemSelecionado}" selectionMode="single" >
<f:facet name="header">Clique sobre o item e escolha a opção desejada</f:facet>
<p:column headerText="ID Produto">
#{item.produto.id}
</p:column>
<p:column headerText="Produto">
#{item.produto.descricao}
</p:column>
<p:column headerText="Quantidade">
#{item.quantidade} KG
</p:column>
<p:column headerText="Total">
<h:outputText value="R$ #{item.total}">
<f:convertNumber locale="pt_BR"></f:convertNumber>
</h:outputText>
</p:column>
<f:facet name="footer">
<p:commandButton id="excluir" value="Excluir" icon="icon-delete"></p:commandButton>
<p:commandButton id="editar" value="Editar" icon="icon-edit" update=":conteudo:display" oncomplete="dialogEdit.show()">
</p:commandButton>
<p:commandButton id="adicionar" value="Adicionar" icon="icon-adiciona"></p:commandButton>
</f:facet>
</p:dataTable>
</p:dialog>
<p:dialog id="confirmEdit" header="Edição de Pedido" widgetVar="dialogEdit"
modal="true" showEffect="fade" appendToBody="true">
<h:panelGrid id="display" columns="3" cellpadding="2">
<h:selectOneMenu value="#{editarPedidoCompra.produto}">
<f:selectItems value="#{buscasGerenciadas.listaTodosProdutos}"
var="produto"
itemLabel="#{produto.descricao}"
itemValue="#{produto}"
></f:selectItems>
</h:selectOneMenu>
<h:outputLabel value="Valor unitário: "></h:outputLabel>
<h:inputText id="valorUnitario" value="#{editarPedidoCompra.itemSelecionado.valorUnitario}"></h:inputText>
<h:outputText value="#{editarPedidoCompra.itemSelecionado.id}"></h:outputText>//AQUI NAO MOSTRA NADA, POIS O itemSelecionado ESTA NULO
</h:panelGrid>
</p:dialog>
ManagedBean:
package com.perfaco.mb;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.primefaces.event.SelectEvent;
import com.perfaco.dao.DAO;
import com.perfaco.dao.JPAUtil;
import com.perfaco.modelo.ItemCompra;
import com.perfaco.modelo.PedidoCompra;
import com.perfaco.modelo.Produto;
@ManagedBean
@ViewScoped
public class EditarPedidoCompra implements Serializable {
private PedidoCompra pedido;
private ItemCompra itemSelecionado;
private Produto produto;
public List<ItemCompra> getListaItensPedido(){
EntityManager em = new JPAUtil().getEntityManager();
Query q = em.createQuery("SELECT i FROM ItemCompra i WHERE i.pedido = :p");
q.setParameter("p", pedido);
return q.getResultList();
}
public void editaPedido(){
FacesContext context = FacesContext.getCurrentInstance();
if(this.pedido==null){
context.addMessage(null, new FacesMessage("Houve um Erro"));
}else{
DAO<PedidoCompra> dao = new DAO<PedidoCompra>(PedidoCompra.class);
dao.atualiza(pedido);
context.addMessage(null, new FacesMessage("Pedido n "+pedido.getId()+ "editado com sucesso"));
this.pedido = new PedidoCompra();
}
}
public PedidoCompra getPedido() {
return pedido;
}
public void setPedido(PedidoCompra pedido) {
this.pedido = pedido;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public ItemCompra getItemSelecionado() {
return itemSelecionado;
}
public void setItemSelecionado(ItemCompra itemSelecionado) {
this.itemSelecionado = itemSelecionado;
}
}