jsf-2 – 如何在ajax请求中避免preRenderView方法调用?
发布时间:2020-12-16 03:06:27 所属栏目:百科 来源:网络整理
导读:我需要在页面加载时调用支持bean的方法.我实现了它使用 f:event listener="#{managedBean.onLoad}" type="preRenderView" 但是,只要在页面中进行ajax请求,该方法将再次被调用.我不需要我的要求.如何避免该方法调用ajax请求? 在渲染视图之前,只要在每个请求
我需要在页面加载时调用支持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. } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |