但在浏览器正在错误的“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
代替。