【问题标题】:Primefaces Confirm Dialog is not deletePrimefaces 确认对话框未删除
【发布时间】:2017-09-07 04:20:22
【问题描述】:

这是我的删除代码:

                       <!--Borrar Asesor-->
                        <p:column headerText="Eliminar" exportable="false" style="width:80px">
                            <p:commandButton value="Eliminar" update="asesorTable" oncomplete="PF('dlg').show();" immediate="true">
                                <f:setPropertyActionListener value="#{asesor}" target="#{eliminarAsesorManagedBean.selectedAsesor}" />
                            </p:commandButton>
                        </p:column>
                        <!--Fin Borrar Asesor-->

这是我的确认对话框:

<!--Borrar Asesor Dialogo-->
            <p:dialog id="dlg" widgetVar="dlg" header="Eliminar" modal="true" resizable="false" minWidth="160">
                <h:form id="formEliminar">
                    <h:outputText value="¿Desesa eliminar?"/>
                    <p:commandButton value="Si" actionListener="#{eliminarAsesorManagedBean.eliminarAsesor()}" 
                                     oncomplete="dlg.hide()"/>
                    <p:commandButton value="No" onclick="dlg.hide();"/>
                </h:form>
            </p:dialog>
            <!--Fin Borrar Asesor Dialogo-->

这是我的托管 Bean:

 public class EliminarAsesorManagedBean {
private Asesor selectedAsesor;
@Inject //Inyección de implementación 
private AsesorService asesorService;

public Asesor getSelectedAsesor() {
    return selectedAsesor;
}

public void setSelectedAsesor(Asesor selectedAsesor) {
    this.selectedAsesor = selectedAsesor;
}

public EliminarAsesorManagedBean() {
}

public void eliminarAsesor() throws IOException {
    asesorService.eliminarAsesor(selectedAsesor);
    ExternalContext con = FacesContext.getCurrentInstance().getExternalContext();
    con.redirect("administrarAsesores.xhtml");
}}

问题是当我在确认对话框上按“Si”时,日志发送错误:

attempt to create delete event with null entity

没有确认对话框,代码删除正常。我正在使用 NetBeans 8.2、Primefaces 6.0 和 Hibernate 4.3

【问题讨论】:

  • 最好的猜测:你的 bean 的范围很短(你有点不使用确认对话框,而是使用普通对话框)
  • 我也尝试过确认对话框,但仍然无法正常工作。
  • Asesor 是实体吗?它必须为空。你的bean的范围是什么?登录 setAsesor 和 bean 构造函数/@PostConstruct 注解的方法,以使用 asesor 字段查看场景下发生的情况。
  • oncomplete="PF('dlg').show();" 这将在您的删除呼叫完成后显示您的确认对话框。
  • onclick="dlg.hide();" -> onclick="PF('dlg').hide();"

标签: java hibernate jsf primefaces confirm-dialog


【解决方案1】:

我解决了我的问题,我改变了这个:

@Named(value = "eliminarAsesorManagedBean")
@RequestScoped

收件人:

@ManagedBean(name = "eliminarAsesorManagedBean")
@ViewScoped

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2017-12-20
    • 1970-01-01
    • 2011-06-08
    • 2016-02-06
    相关资源
    最近更新 更多