Jsf 2.2 即使在InvokeApplication PhaseListener的Before阶段中设置了renderResponse,事件仍然会在myfaces中广播

Jsf 2.2 即使在InvokeApplication PhaseListener的Before阶段中设置了renderResponse,事件仍然会在myfaces中广播,jsf-2.2,myfaces,omnifaces,mojarra,Jsf 2.2,Myfaces,Omnifaces,Mojarra,我们正在WebSphereLiberty概要文件服务器上使用myfaces 我们有一个针对InvokeApplication阶段设置的phaseListener,因此当beforePhase中出现异常时,我们在facesContext上设置renderResponse,认为它将跳过进一步的处理,不会在InvokeApplication上广播事件,但它确实会 LifecycleImpl.java-行#191起- if (shouldRenderResponse(context, c

我们正在WebSphereLiberty概要文件服务器上使用myfaces

我们有一个针对InvokeApplication阶段设置的phaseListener,因此当beforePhase中出现异常时,我们在facesContext上设置renderResponse,认为它将跳过进一步的处理,不会在InvokeApplication上广播事件,但它确实会

LifecycleImpl.java-行#191起-

        if (shouldRenderResponse(context, currentPhaseId, true))
        {
            skipFurtherProcessing = true;
        }

        if (executor.execute(context))
        {
            return true;
        }
现在,上面的代码显然没有跳过executor.execute(上下文),即使在执行renderResponse时也是如此。 但是Mojarra 2.2.11-行为不同-如果在PreforePhase中调用renderResponse,它将跳过。 com.sun.faces.lifecycle.Phase-第99行之后:

Phase.java

       handleBeforePhase(context, listeners, event);
        if (!shouldSkip(context)) {
            execute(context);
        }
   private boolean shouldSkip(FacesContext context) {
    if (context.getResponseComplete()) {
        return (true);
    } else if (context.getRenderResponse() &&
               !PhaseId.RENDER_RESPONSE.equals(this.getId())) {
        return (true);
    } else {
        return (false);
    }
    }
Phase.java中的“shouldSkip”方法impl

       handleBeforePhase(context, listeners, event);
        if (!shouldSkip(context)) {
            execute(context);
        }
   private boolean shouldSkip(FacesContext context) {
    if (context.getResponseComplete()) {
        return (true);
    } else if (context.getRenderResponse() &&
               !PhaseId.RENDER_RESPONSE.equals(this.getId())) {
        return (true);
    } else {
        return (false);
    }
    }
现在要么Mojarra错了,要么Myfaces实现错了。在我们的例子(即myfaces实现)中,如果在调用应用程序的before阶段设置了render response,那么跳过事件的机制应该是什么