-1

我在使用数据表的 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>

我的托管 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 有人可以帮助我吗?

4

1 回答 1

0

看看Primefaces ShowCase

您总是为您的产品创造新产品selectedProduto

private Produto selectedProduto = new Produto();

试试这个代码:

private Produto selectedProduto;

如所见,吸气剂和二传手已经在那里。

于 2013-07-15T14:48:03.350 回答