【发布时间】:2015-06-26 21:04:15
【问题描述】:
我正在尝试为用户尝试删除某些内容时发出简单的对话框警报。但我的问题是 PrimeFaces。响应内容与我想显示的消息一样,出现 500 错误,但没有显示消息,对话框出现并且为空。
这是我的支持 bean 的代码:
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error!", "No se ha podido eliminar el periodo"));
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse) context.getResponse();
response.setStatus(500);
这里是命令按钮:
<p:commandButton value="Eliminar"
action="#{cicloEscolarWiz.doConfirmarEliminarPeriodoLectivo}"
ajax="true"
onerror="messages.show();"
update=":dlgMessages"/>
这是我的对话:
<p:dialog id="dlgMessages"
showEffect="explode"
closable="true"
header="Mensajes"
widgetVar="messages"
modal="true"
style="font-size: 12px;">
<h:panelGroup id="pnlGrpMessages">
<p:panel>
<h:panelGrid columns="1" cellpadding="0" cellspacing="0">
<p:messages id="deletePeriodoLectivoMessages"
showDetail="true"
autoUpdate="true"
closable="true" />
</h:panelGrid>
</p:panel>
<p:spacer height="10"/>
<p:separator />
</h:panelGroup>
</p:dialog>
所以我想要实现的是,当我点击命令按钮做出 500 错误响应时,对话框必须出现并出现但为空,没有消息。
【问题讨论】:
-
您需要在它开始呈现视图之前执行此操作(使用
<f:event type="preRenderView">或<f:viewAction>(JSF 2.2)),因为响应已经发送到无法收回的客户端。已经回答了一些问题,例如this。在这种情况下,只需显示一条用户友好的消息。
标签: jsf jsf-2 primefaces onerror