jsf-2 – 如何在ajax请求中避免preRenderView方法调用?

前端之家收集整理的这篇文章主要介绍了jsf-2 – 如何在ajax请求中避免preRenderView方法调用?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在页面加载时调用支持bean的方法.我实现了它使用
<f:event listener="#{managedBean.onLoad}" type="preRenderView">

但是,只要在页面中进行ajax请求,该方法将再次被调用.我不需要我的要求.如何避免该方法调用ajax请求?

在渲染视图之前,只要在每个请求上调用preRenderView事件. ajax请求也是呈现视图的请求.所以行为是完全预期的.

你基本上有两个选择:

>在@ViewScoped bean上用@PostConstruct方法替换它.

@ManagedBean
@ViewScoped
public class ManagedBean {

    @PostConstruct
    public void onLoad() {
        // ...
    }

}

这是在第一次构建bean时调用的.视图范围的bean实例只要在与postbacks(ajax)不同的交互中与同一视图进行交互即可.

>如果当前请求是ajax请求,请在侦听器方法内执行检查.

@ManagedBean
// Any scope.
public class ManagedBean {

    public void onLoad() {
        if (FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) { 
            return; // Skip ajax requests.
        }

        // ...
    }

}

或者,如果您真的有兴趣跳过回发,而不是专门的ajax请求,请改为:

if (FacesContext.getCurrentInstance().isPostback()) { 
            return; // Skip postback requests.
        }
原文链接:https://www.f2er.com/ajax/160097.html

猜你在找的Ajax相关文章