2013-07-13 4 views
-1

У меня проблема с перформами, использующая datatable. Я использую выбор свойства, но я не могу взять объект, который я выбрал. Посмотрите на мой кодИспользование выбора в dataTable primefaces

  <p:dataTable id="dtProdutos" value="#{produtoBean.produtos}" var="p" 
      emptyMessage="Nenhum registro encontrado." selectionMode="single" 
          selection="#{produtoBean.selectedProduto}" rowKey="#{p.id}" 
          style="text-align: center; font-weight: bold;" > 
      <f:facet name="header"> 
       <h:outputText value="Registro de Produtos" /> 
      </f:facet>        
          <p:column>     
           <h:outputText value="#{p.id}" />         

      </p:column> 
      <p:column> 
       <f:facet name="header"> 
        <h:outputText value="Nome" /> 
       </f:facet> 
       <h:outputText value="#{p.nome}" /> 
      </p:column> 
          <p:column> 
       <f:facet name="header"> 
        <h:outputText value="Descrição" /> 
       </f:facet> 
           <h:outputText value="#{p.descricao}" /> 
      </p:column> 
          <p:column> 
       <f:facet name="header"> 
        <h:outputText value="Valor Un." /> 
       </f:facet> 
           <h:outputText value="#{p.valorUnitario}" /> 
      </p:column> 
      <p:column> 
       <f:facet name="header"> 
        <h:outputText value="Remover" /> 
       </f:facet>          
       <f:ajax event="click" render="@form" 
        listener="#{produtoBean.remove(p)}"> 
        <h:commandLink value="Remover" /> 
       </f:ajax> 
      </p:column> 
        <f:facet name="footer"> 
         <p:commandButton id="updateButton" value="Update" icon="ui-icon-search" 
             update=":frmGeral:display" oncomplete="produtoDialog.show()"/> 
        </f:facet>        
     </p:dataTable> 

      <p:dialog id="dialog" header="Alterar" widgetVar="produtoDialog" resizable="false" 
          width="200" showEffect="clip" hideEffect="fold"> 
        <h:panelGrid id="display" columns="2" cellpadding="4"> 
         <h:outputText value="Nome" />        
         <h:outputText value="#{produtoBean.selectedProduto.nome}" />        
        </h:panelGrid> 

       </p:dialog> 

Мой Managed Bean

@ManagedBean 
public class ProdutoBean{ 
    @ManagedProperty(value = "#{entityManager}") 
    private EntityManager entityManager = Persistence.createEntityManagerFactory("PrimeiroTeste").createEntityManager(); 

    private Produto produto = new Produto(); 
    private List<Produto> produtos; 
     private Produto selectedProduto = new Produto(); 

    public void save(){     
     ProdutoRepository produtoRepository = new ProdutoRepository(this.entityManager); 
     produtoRepository.save(this.produto); 

     this.produto = new Produto(); 
     this.produtos = null; 
    } 
    public void remove(Produto produto){ 
      ProdutoRepository produtoRepository = new ProdutoRepository(this.entityManager); 
      produtoRepository.remove(produto); 

      this.produtos = null; 
    } 
    public List<Produto> getProdutos(){ 
     if (this.produtos == null){ 
        ProdutoRepository produtoRepository = new ProdutoRepository(this.entityManager); 
        this.produtos = produtoRepository.getProdutos(); 
       } 
     return this.produtos; 
    } 
    public Produto getProduto(){ 
     return this.produto; 
    } 
    public void setProduto(Produto produto){ 
     this.produto = produto; 
    } 

    public void setEntityManager(EntityManager entityManager){ 
     this.entityManager = entityManager; 

    } 
    @SuppressWarnings("unused") 
    private EntityManager getManager() { 
     FacesContext fc = FacesContext.getCurrentInstance(); 
     ExternalContext ec = fc.getExternalContext(); 
     HttpServletRequest request = (HttpServletRequest) ec.getRequest(); 
     return (EntityManager) request.getAttribute(" EntityManager "); 
    } 


    public Produto getSelectedProduto() {   
     return this.selectedProduto; 

    } 

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

Когда я открываю мой диалог она не приведи selectedProduto.nome Кто-то может мне помочь?

ответ

0

Посмотрите на Primefaces ShowCase

Вы всегда создать новый продукт для selectedProduto

private Produto selectedProduto = new Produto(); 

попробовать с этим кодом:

private Produto selectedProduto; 

методы получения и установки уже есть как это видно.

+0

Привет, я следил за ShowCase, но эта часть не работает для меня. Я не знаю, что я делаю неправильно. И я сделал это изменение, но ничего не произошло. – hemanuel

Смежные вопросы