但在瀏覽器正在錯誤的「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
代替。