3

私は Omnifaces FullAjaxExceptionHandler を使用しています - これはうまく機能していますが、ajax 呼び出しを行い、status == 'success' をチェックする onevent 関数がある場合、FullAjaxExceptionHandler がエラー ページをレンダリングしたにもかかわらず、まだ呼び出されています。(私はJSFを使用しています(グラスフィッシュ3.1.1のMojarra 2.1.3)

JSF コード:

<h:commandButton value="myButton"> <f:ajax listener="#{myBean.myBeanFunction()}" render="someDiv" onevent="myFunction"/> </h:commandButton>

Javascript コード:

function myFunction(e) { if (e.status == 'success') { alert("Success"); } }

そのため、FullAjaxExceptionHandler によってエラー ページが表示される場合は、javascript 関数を実行しない方法が必要です。

4

1 に答える 1

4

返された XML 応答が、a が実行されたことを示していない場合は、次のように確認できますrender="@all"(これは、ドキュメント全体が置き換えられることを示します)。

if (e.responseXML.getElementById('javax.faces.ViewRoot') == null) {
    // ...
}

PrimeFaces コマンド コンポーネントで動作するoncompleteのは、これに標準の JSF ajax API を使用せず、異なる方法で (より直感的に) 処理を行うためです。

于 2012-07-04T03:08:06.040 に答える