3

我碰巧不明白为什么如果发生异常我无法在 ap:ajaxStatus 上收到警报

我基本上在 facelet 页面中有这段代码

<p:ajaxStatus onerror="alert('Error occurred!')" />

<p:commandLink  title="Delete" process="@this" 
    actionListener="#{myBean.deleteData}">
    <h:outputText value="Delete" />                 
</p:commandLink>

在我的 bean 上,我提出了一个异常来测试 ajax 状态

public void deleteData(ActionEvent event) {
    throw new CustomException("Testing");
}

我不确定,但不会在 ajax 请求上触发警报。

我检查了萤火虫并看到了这个 ajax 响应。

<?xml version='1.0' encoding='UTF-8'?>
<partial-response><changes><update id="javax.faces.ViewState"><![CDATA[5240489117331224423:7642972336085906948]]></update></changes></partial-response>

但是当我检查服务器日志时,我看到它已注册

javax.faces.event.AbortProcessingException: /pages/members.xhtml @208,128 actionListener="#{myBean.deleteData}": com.test.CustomException: Testing

为什么会这样?

Primefaces 3.2/Glassfish/JSF 2.0

4

1 回答 1

2

来自 Primefaces 3.2 文档p:ajaxStatus

onerror: Client side callback to execute when an ajax request fails.

在 Firebug 中,您会收到常规的 ajax 响应。所以请求没有失败。据我了解,失败意味着没有响应或响应无效。您看到的是预期的行为。

更新:正如 perissf 所评论的,通常的方法是在您的操作方法中生成一个 FacesMessage 并h:messages使用您的 ajax 请求更新一个标签。

于 2012-05-23T07:41:04.193 回答