0

我使用带有 Primefaces/JSF 的 Spring MVC 作为 VIEWER 和 Spring Webflow 作为 CONTROLLER,我遇到了以下问题:

我正在尝试使用 primefaces 组件 commandButton 发送 AJAX 事件,其中我的流程转换到抛出空指针异常的方法。第一个请求一切正常!响应是 500 HTTP 状态,该方法不执行的第二个请求会导致 200 HTTP 状态响应。所有连续的动作都遵循相同的模式,工作和不工作。更深入地研究代码,我发现在 JsfView.processUserEvent 方法(执行 Jsf 生命周期的地方)中,当一切正常时,指令 facesContext.getRenderResponse() 返回 true,否则返回 false。所以我调查了为什么会发生这种情况,并了解到在 Jsf 生命周期结束时,这个标志设置为 true(好的,

我没有找到有关如何处理来自 AJAX 请求的业务代码异常的任何信息(我知道如果没有 ajax 请求,您可以调用重定向,一切都会正常工作,但是使用 ajax 请求,整个页面将被刷新和这不是我希望从 ajax 请求中得到的行为。请有人可以帮助我吗?我的场景如上所述:

JSF/Primefaces:

<p:commandButton value="Ajax Request" action="TX1" ajax="true" />

流动:

<transition on="TX1">
    <evaluate expression="testPopupMB.nullPointerException()"/> 
</transition>

商务课程:

public void nullPointerException() {
    throw new NullPointerException("null");
}

输出:

  1. 500内部服务器错误)
  2. 200(确定)
  3. 500内部服务器错误)
  4. 200(确定)

所用技术的版本:primefaces 3.6-SNAPSHOT、spring webflow 2.3.1、JSF Mojarra 2.1.7 和 springframework 3.1.2 谢谢您的宝贵时间

4

1 回答 1

0

全局转换添加到您的流程中:

    ...

    <global-transitions>
        <transition on-exception="java.lang.Exception" to="defaultError"/>
    </global-transitions>
</flow>
于 2013-09-17T09:07:55.813 回答