在dataTable primefaces上使用选择

在dataTable primefaces上使用选择,primefaces,datatable,selection,Primefaces,Datatable,Selection,我在使用datatable时遇到问题。 我使用属性选择,但无法获取我选择的对象。 看看我的代码 <p:dataTable id="dtProdutos" value="#{produtoBean.produtos}" var="p" emptyMessage="Nenhum registro encontrado." selectionMode="single" selection="#{

我在使用datatable时遇到问题。 我使用属性选择,但无法获取我选择的对象。 看看我的代码

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

我的豆子

@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;  
    }
}
@ManagedBean
公共类ProdutoBean{
@ManagedProperty(value=“#{entityManager}”)
私有EntityManager EntityManager=Persistence.createEntityManager工厂(“PrimeiroTeste”).createEntityManager();
private Produto Produto=新Produto();
私人名单生产商;
private Produto selectedProduto=new Produto();
public void save(){
ProdutoRepository ProdutoRepository=新的ProdutoRepository(this.entityManager);
produtoRepository.save(this.produto);
this.produto=新的produto();
this.produtos=null;
}
公共无效删除(Produto Produto){
ProdutoRepository ProdutoRepository=新的ProdutoRepository(this.entityManager);
produto repository.remove(produto);
this.produtos=null;
}
公共列表getProdutos(){
if(this.produtos==null){
ProdutoRepository ProdutoRepository=新的ProdutoRepository(this.entityManager);
this.produtos=produtoRepository.getProdutos();
}
返回此.produtos;
}
公共Produto getProduto(){
返回此.produto;
}
公共无效setProduto(Produto-Produto){
this.produto=produto;
}
公共无效设置EntityManager(EntityManager EntityManager){
this.entityManager=entityManager;
}
@抑制警告(“未使用”)
私有实体管理器getManager(){
FacesContext fc=FacesContext.getCurrentInstance();
ExternalContext ec=fc.getExternalContext();
HttpServletRequest=(HttpServletRequest)ec.getRequest();
return(EntityManager)request.getAttribute(“EntityManager”);
}
public Produto getSelectedProduto(){
返回此。selectedProduto;
}  
public void setSelectedProduto(Produto selectedProduto){
this.selectedProduto=selectedProduto;
}
}
当我打开对话框时,它不会显示selectedProduto.nome 有人能帮我吗?

看看

您总是为所选产品创建新产品

private Produto selectedProduto = new Produto();
请使用以下代码进行尝试:

private Produto selectedProduto;

正如我们所看到的那样,能手和二传手已经在那里了。

嗨,我一直在关注展示,但那部分对我不起作用。我不知道我做错了什么。我做了改变,但什么都没发生。