3

例外が発生した場合にap:ajaxStatusでアラートを取得できない理由がわかりません。

私は基本的にこのコードをフェイスレットページに持っています

<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リクエストでアラートがトリガーされません。

私はfirebugをチェックし、この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 に答える