You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring WebFlow中处理FlowException及格式错误异常并重定向

解决BadlyFormattedFlowExecutionKeyException异常的重定向处理

问题分析

BadlyFormattedFlowExecutionKeyException是Spring Web Flow处理无效流程执行Key时抛出的特定异常,虽继承自FlowException,但你当前配置的java.lang.Exception全局过渡未捕获到它——原因是该异常通常在流程执行的早期(解析执行Key阶段)抛出,此时Web Flow的全局过渡逻辑还未生效。

解决方案

方案1:添加特定异常的全局过渡(优先推荐)

在global-transitions中优先声明针对该异常的过渡规则,Web Flow会按配置顺序匹配异常,特定异常规则需要放在通用异常规则之前:

<global-transitions>
    <!-- 先匹配特定的Web Flow异常 -->
    <transition on-exception="org.springframework.webflow.execution.repository.support.BadlyFormattedFlowExecutionKeyException" to="invalid"/>
    <!-- 再匹配通用异常 -->
    <transition on-exception="java.lang.Exception" to="invalid"/>
</global-transitions>

方案2:用Spring MVC全局异常处理器兜底

如果方案1仍未生效,说明异常发生在Web Flow流程启动前,此时需要借助Spring MVC的全局异常处理器捕获并处理:

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.webflow.execution.repository.support.BadlyFormattedFlowExecutionKeyException;

@ControllerAdvice
public class GlobalMvcExceptionHandler {

    @ExceptionHandler(BadlyFormattedFlowExecutionKeyException.class)
    public ModelAndView handleInvalidFlowExecutionKey() {
        // 直接返回指定的error视图(替换成你实际的模板名称)
        return new ModelAndView("invalid");
    }
}

额外注意

确保invalid对应的视图模板已正确配置,能被项目的视图解析器(如Thymeleaf、JSP解析器)正常识别并渲染。

内容的提问来源于stack exchange,提问作者Parameshwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:05:33