单击第二次组件后,页面空白
(抱歉,如果英语不好)
我有一个显示数据表的页面,并且可以删除记录,但我有一个条件,如果它的 ID 类型是唯一的,则无法删除。因此,当发生这种情况时,我想在
组件中显示一条消息,这种情况发生正常,但如果我再次单击删除按钮,页面将变为空白,并且它可以'没有刷新什么的,我必须重新登录。
xhtml:
<p:dataTable id="respProdDT" widgetVar="respProdDT" var="resProd" value="#{caleFactBean.lstResponsablesProductos}"
reflow="true" styleClass="products-table" scrollable="true" scrollWidth="99%"
paginator="true" rows="10" paginatorPosition="bottom" >
<f:facet name="header">
<div align="center">
<h:outputText value="Responsables por Producto" style="font-size: large"/>
</div>
</f:facet>
<p:column headerText="Producto">
<h:outputText value="#{resProd.grupoProducto}" />
</p:column>
<p:column headerText="Rol Autorizador">
<h:outputText value="#{resProd.rolResponsable}" />
</p:column>
<p:column headerText="Tipo Autorizacion">
<h:outputText value="Nivel #{resProd.idNivel}" />
</p:column>
<p:column headerText="Estado Autorizacion">
<h:outputText value="#{resProd.estadoSolicitud}" rendered="#{resProd.isText()}"/>
<p:selectOneMenu value="#{resProd.idEstadoSolicitud}" rendered="#{resProd.isComboBox()}">
<f:selectItem var="car" itemLabel="Select one" itemValue="" />
<f:selectItems value="#{caleFactBean.combo}"/>
</p:selectOneMenu>
</p:column>
<p:column headerText="Fecha Inicio">
<h:outputText value="#{resProd.fechaInicio}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Fecha Fin">
<h:outputText value="#{resProd.fechaFin}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Accion">
<p:commandLink id="btnEditarRespProd"
rendered="#{resProd.isEditable()}"
styleClass="ui-icon-document"
oncomplete="PF('dlgEditarRespProd').show();"
update="acordionPanels:frmEditarRespProd"
action="#{caleFactBean.mapearRespProd()}">
<p:tooltip for="btnEditarRespProd" value="Editar" />
<f:setPropertyActionListener value="#{resProd}"
target="#{caleFactBean.respProdAEditar}" />
<p:graphicImage style="width:30px;"
value="/resources/static/images/edit-icon.png" />
</p:commandLink>
<p:commandLink id="btnBorrarRespProd" styleClass="ui-icon-document"
rendered="#{resProd.isRemovable()}"
oncomplete="PF('dlgEliminarRespProd').show();" update="@form">
<p:tooltip for="btnBorrarRespProd" value="Eliminar" />
<f:setPropertyActionListener value="#{resProd}"
target="#{caleFactBean.respProdAEliminar}" />
<p:graphicImage style="width:30px;"
value="/resources/static/images/borrar-icon.png" />
</p:commandLink>
</p:column>
</p:dataTable>
<h:form id="frmEliminarRespProd">
<p:dialog header="¿Eliminar responsable producto?" id="dlgEliminarRespProd" widgetVar="dlgEliminarRespProd" modal="true" resizable="false" closable="false">
<center>
<h:outputLabel value="¿Eliminar registro?" />
<br/><br/>
<p:commandButton value="Cancelar" onclick="PF('frmEliminarRespProd').hide();" />
<p:commandButton value="Aceptar" action="#{caleFactBean.eliminarRespProd}" onclick="PF('frmEliminarRespProd').hide();" style="margin-left: 10px;"/>
</center>
</p:dialog>
</h:form>
删除方法:
public void eliminarRespProd() throws Exception {
logger.info("respProdAEliminar: " + respProdAEliminar);
//boolean hasMoreThanOne = false;
int countRespProdNivel = 0;
try {
for (ResponsableProdVo respProd : lstResponsablesProductos ) {
if(respProdAEliminar.getIdGrupoProducto() == respProd.getIdGrupoProducto())
countRespProdNivel++;
if(countRespProdNivel > 1) {
break;
}
}
if(countRespProdNivel > 1) {
responsablesProductoService.eliminarRespProd(respProdAEliminar);
FacesContext.getCurrentInstance().getExternalContext().redirect("factnueva-flow");
} else {
//TODO: mensaje "El registro no se puede eliminar al ser el único responsable del producto"
// FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR al eliminar","El registro no se puede eliminar al ser el único responsable del producto");
// FacesContext.getCurrentInstance().addMessage("respProdMssg", message);
// this.mensaje = "El registro no se puede eliminar al ser el único responsable del producto";
// RequestContext.getCurrentInstance().execute("PF('dlgMensajes').show();");
}
} catch (Exception e) {
logger.error("Ocurrio un error al eliminar el registro de Responsables Producto. " + e.getLocalizedMessage());
throw e;
}
}
任何想法为什么会发生这种情况?
(Sorry If bad english)
I got a page that displays a datatable and the records can be deleted, but I have a condition that if its ID kind it's the only one left it can't be delete. So when this happens I want to display a message in a <p:growl />
component, this happens okay, but if I click the delete button again, the page goes blank and it can't be refreshed or anything, I have to login again.
xhtml:
<p:dataTable id="respProdDT" widgetVar="respProdDT" var="resProd" value="#{caleFactBean.lstResponsablesProductos}"
reflow="true" styleClass="products-table" scrollable="true" scrollWidth="99%"
paginator="true" rows="10" paginatorPosition="bottom" >
<f:facet name="header">
<div align="center">
<h:outputText value="Responsables por Producto" style="font-size: large"/>
</div>
</f:facet>
<p:column headerText="Producto">
<h:outputText value="#{resProd.grupoProducto}" />
</p:column>
<p:column headerText="Rol Autorizador">
<h:outputText value="#{resProd.rolResponsable}" />
</p:column>
<p:column headerText="Tipo Autorizacion">
<h:outputText value="Nivel #{resProd.idNivel}" />
</p:column>
<p:column headerText="Estado Autorizacion">
<h:outputText value="#{resProd.estadoSolicitud}" rendered="#{resProd.isText()}"/>
<p:selectOneMenu value="#{resProd.idEstadoSolicitud}" rendered="#{resProd.isComboBox()}">
<f:selectItem var="car" itemLabel="Select one" itemValue="" />
<f:selectItems value="#{caleFactBean.combo}"/>
</p:selectOneMenu>
</p:column>
<p:column headerText="Fecha Inicio">
<h:outputText value="#{resProd.fechaInicio}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Fecha Fin">
<h:outputText value="#{resProd.fechaFin}" >
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
<p:column headerText="Accion">
<p:commandLink id="btnEditarRespProd"
rendered="#{resProd.isEditable()}"
styleClass="ui-icon-document"
oncomplete="PF('dlgEditarRespProd').show();"
update="acordionPanels:frmEditarRespProd"
action="#{caleFactBean.mapearRespProd()}">
<p:tooltip for="btnEditarRespProd" value="Editar" />
<f:setPropertyActionListener value="#{resProd}"
target="#{caleFactBean.respProdAEditar}" />
<p:graphicImage style="width:30px;"
value="/resources/static/images/edit-icon.png" />
</p:commandLink>
<p:commandLink id="btnBorrarRespProd" styleClass="ui-icon-document"
rendered="#{resProd.isRemovable()}"
oncomplete="PF('dlgEliminarRespProd').show();" update="@form">
<p:tooltip for="btnBorrarRespProd" value="Eliminar" />
<f:setPropertyActionListener value="#{resProd}"
target="#{caleFactBean.respProdAEliminar}" />
<p:graphicImage style="width:30px;"
value="/resources/static/images/borrar-icon.png" />
</p:commandLink>
</p:column>
</p:dataTable>
<h:form id="frmEliminarRespProd">
<p:dialog header="¿Eliminar responsable producto?" id="dlgEliminarRespProd" widgetVar="dlgEliminarRespProd" modal="true" resizable="false" closable="false">
<center>
<h:outputLabel value="¿Eliminar registro?" />
<br/><br/>
<p:commandButton value="Cancelar" onclick="PF('frmEliminarRespProd').hide();" />
<p:commandButton value="Aceptar" action="#{caleFactBean.eliminarRespProd}" onclick="PF('frmEliminarRespProd').hide();" style="margin-left: 10px;"/>
</center>
</p:dialog>
</h:form>
Method to delete:
public void eliminarRespProd() throws Exception {
logger.info("respProdAEliminar: " + respProdAEliminar);
//boolean hasMoreThanOne = false;
int countRespProdNivel = 0;
try {
for (ResponsableProdVo respProd : lstResponsablesProductos ) {
if(respProdAEliminar.getIdGrupoProducto() == respProd.getIdGrupoProducto())
countRespProdNivel++;
if(countRespProdNivel > 1) {
break;
}
}
if(countRespProdNivel > 1) {
responsablesProductoService.eliminarRespProd(respProdAEliminar);
FacesContext.getCurrentInstance().getExternalContext().redirect("factnueva-flow");
} else {
//TODO: mensaje "El registro no se puede eliminar al ser el único responsable del producto"
// FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "ERROR al eliminar","El registro no se puede eliminar al ser el único responsable del producto");
// FacesContext.getCurrentInstance().addMessage("respProdMssg", message);
// this.mensaje = "El registro no se puede eliminar al ser el único responsable del producto";
// RequestContext.getCurrentInstance().execute("PF('dlgMensajes').show();");
}
} catch (Exception e) {
logger.error("Ocurrio un error al eliminar el registro de Responsables Producto. " + e.getLocalizedMessage());
throw e;
}
}
Any ideas why this could happen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论