繁体   English   中英

JSF 2.0 Ajax异常处理

[英]JSF 2.0 Ajax Exception Handling

我在我们的xhtml文件中编写了以下代码,用于重定向到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" 

但它也给出了同样的错误。

可以任何人请告诉我我在哪里犯了错误

但在浏览器中我得到错误为“Jsf undefined”。

你确定这不是你身边的错字吗? 它是全部小写的jsf ,而不是Jsf

在任何情况下,只要您尝试在JavaScript上下文中声明jsf对象之前引用它,就会收到此错误。 例如,生成的HTML输出(如webbrowser中的View Source所示 )如下所示:

<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>

此外,您需要考虑这样一个事实:只要视图中的其他地方有<f:ajax>标记,JSF就会自动包含它。 如果是这种情况,您可能需要额外检查:

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

否则,您需要添加以下行以确保JSF将在每个请求上自动包含ajax脚本,即使该视图不包含任何<f:ajax>

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

具体问题无关 ,如果您还希望在ajax请求中使用web.xml的标准<error-page>机制,那么请考虑使用此FullAjaxExceptionHandler

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM