2014-02-21 29 views
3

jsf.ajax.addOnError如何實際捕獲錯誤? 我沒有找到任何有關它的機制的信息。我只發現它是一個錯誤偵聽器。使用jsf.ajax.addOnError處理ajax錯誤

+1

爲什麼應該錯誤偵聽器捕獲錯誤?究竟是什麼,你試圖解決的問題,還是你試圖實現的功能需求?這可能會產生比問一個修辭問題更好的答案。 – BalusC

回答

1

無論你發現jsf.ajax.addOnError是錯誤的聲明聽衆,該來源是錯誤的。 addOnError函數添加了錯誤偵聽器(即,您自己定義的函數,並且在JSF框架遇到錯誤情況時會調用該函數)。

這是直出JSF-2.2 spec, 13.3.6.2的:

的jsf.ajax.addOnError函數接受一個JavaScript函數的參數,這將是 通知時期間的任何Ajax請求/響應循環發生的錯誤。 [P1-start-event]實現必須確保必須按照表14-5「錯誤」中列出的錯誤調用註冊的JavaScript函數[P1-end]

因此, 「錯誤」表定義了函數將在哪些條件下被調用。它們是:

  • httpError:請求狀態== null或request.status ==未定義或request.status < 200或 request.status> = 300
  • SERVERERROR:Ajax響應包含一個「錯誤」元素。
  • malformedXML:Ajax響應沒有遵循正確的格式。
  • emptyResponse:沒有來自服務器的Ajax響應。

JSF實現基本上觸發了一個Ajax請求,並定義了當響應到達時瀏覽器調用的內部處理程序。然後,他們被要求檢查迴應,如果符合上述條件,他們會查找是否已經註冊了任何要調用的函數,並在需要時執行它們(它們做的更多,但這是這裏所討論的部分)。

+0

基於OP的[上一個問題](http://stackoverflow.com/questions/21936401/handling-ajax-errors),我相信他已經知道了這一切。 – BalusC

+0

@BalusC那麼,這留下了「增加一個錯誤偵聽器」位,即指出了這個問題的缺陷前提。在這裏沒有什麼神奇的解釋(一次!) – mabi

+0

是的,你的回答是正確的。但我相信這並不能幫助他解決他實際的問題/要求。我相信他只是問了一個錯誤的問題。 – BalusC