2012-03-20 152 views
0

我已經在我們的xhtml文件中編寫了下面的代碼,用於重定向到ajax調用的錯誤頁面,我已經將它寫入了常用頁面。JSF 2.0 Ajax異常處理

var onError = function onError() { 
window.location = 'http://' + jQuery(location).attr('host')+'/saec/app/error';//saec/app/error };jsf.ajax.addOnError(onError); 

它工作正常,但在瀏覽器中得到錯誤爲「Jsf undefined」。

我已經包括

h:outputScript name="jsf.js" library="javax.faces" target="head" 

也,但其給出了同樣的錯誤嘗試。

任何一個可以請告訴我在哪裏,我做了錯誤

回答

2

但在瀏覽器正在錯誤的「JSF未定義」。

您確定這不是來自您身邊的錯字嗎?全部爲小寫,全部爲​​,而不是Jsf

在任何情況下,只要您嘗試引用​​對象之前它曾在JavaScript上下文中聲明過,就會得到此錯誤。例如,在生成的HTML輸出(因爲你可以通過查看源在網頁瀏覽器看到的)是這樣的:

<script>jsf.ajax.addOnError(functionName);</script> 
<script src="/contextname/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script> 

你應該確保你引用它後它被聲明:

<script src="/contextname/javax.faces.resource/jsf.js.xhtml?ln=javax.faces"></script> 
<script>jsf.ajax.addOnError(functionName);</script> 

此外,您需要考慮到JSF只會在視圖中的其他位置存在<f:ajax>標籤時自動包含它的事實。您可能要添加額外的檢查,如果是這種情況或不:

if (typeof jsf !== 'undefined') { 
    jsf.ajax.addOnError(functionName); 
} 

否則,您需要添加以下行絕對確保JSF將自動包括在每次請求的AJAX腳本,即使該視圖不包含任何<f:ajax>

<h:outputScript library="javax.faces" name="jsf.js" target="head" /> 

無關到具體的問題,如果你想使用標準<error-page>機制web.xml對Ajax請求爲好,然後再考慮使用此FullAjaxExceptionHandler代替。