RequestContext requestContext = RequestContext.getCurrentInstance();
if(requestContext.isAjaxRequest()) {
LifecycleFactory factory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);
Lifecycle lifecycle = factory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);
PrimeFacesPhaseListener listener = new PrimeFacesPhaseListener();
PhaseEvent phaseEvent = new PhaseEvent(FacesContext.getCurrentInstance(), PhaseId.RENDER_RESPONSE, lifecycle);
requestContext.setAjaxRedirectUrl(url);
listener.beforePhase(phaseEvent); //send ajax redirect request
RequestContext.getCurrentInstance().release();
} else {
RequestContext.getCurrentInstance().release();
super.redirect(url);