【发布时间】: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