我正在使用Omnifaces FullAjaxExceptionHandler - 它工作得很好,但是当我执行ajax调用并且有一个检测status =='success'的onevent函数时,它仍然被调用,即使FullAjaxExceptionHandler已经渲染了错误页面。 (我正在使用JSF(Glassfish 3.1.1上的Mojarra 2.1.3)
JSF代码:
<h:commandButton value="myButton">
<f:ajax listener="#{myBean.myBeanFunction()}"
render="someDiv"
onevent="myFunction"/>
</h:commandButton>
Javascript代码:
function myFunction(e)
{
if (e.status == 'success') {
alert("Success");
}
}
因此,如果FullAjaxExceptionHandler将我带到错误页面,我需要一些不执行javascript函数的方法。
答案 0 :(得分:4)
如果返回的XML响应未指示已执行render="@all"
(这表示将替换整个文档),则可以按如下方式检查:
if (e.responseXML.getElementById('javax.faces.ViewRoot') == null) {
// ...
}
它与PrimeFaces命令组件的oncomplete
一起使用是因为它没有使用标准的JSF ajax API,因此更直观地做事情。