【问题标题】:How to redirect from @Controller to a flow如何从@Controller 重定向到流
【发布时间】:2019-05-07 08:10:01
【问题描述】:

我需要从@Controller 重定向到一个流,但我不知道该怎么做。我需要在某种情况下继续使用 MVC,或者在另一种情况下进入我的流程。这是我的/auth 方法的最后一行:

return new ModelAndView(isFlowProtected(getClientId(sessionDataPayloadJSON)) ?
    "redirect:/login-flow" :
    LoginConstants.LOGIN);

基本上,我有两个登录流程,一个通过普通的 Spring MVC,一个在 webflow 下。以下是我配置流程的方式:

@Bean
public FlowDefinitionRegistry flowRegistry() {
    return getFlowDefinitionRegistryBuilder().addFlowLocation("/webflow/login-flow.xml","login-flow"
            .setFlowBuilderServices(this.flowBuilderServices())
            .build();
}

@Bean
public FlowExecutor flowExecutor() {
    return getFlowExecutorBuilder(this.flowRegistry())
            .build();
}

@Bean
public FlowBuilderServices flowBuilderServices() {
    return getFlowBuilderServicesBuilder()
            .setViewFactoryCreator(this.mvcViewFactoryCreator()) // Important!
            .setValidator(this.localValidatorFactoryBean).build();
}

@Bean
public FlowHandlerMapping flowHandlerMapping() {
    FlowHandlerMapping handlerMapping = new FlowHandlerMapping();
    handlerMapping.setOrder(-1);
    handlerMapping.setFlowRegistry(this.flowRegistry());
    return handlerMapping;
}

@Bean
public FlowHandlerAdapter flowHandlerAdapter() {
    FlowHandlerAdapter handlerAdapter = new FlowHandlerAdapter();
    handlerAdapter.setFlowExecutor(this.flowExecutor());
    handlerAdapter.setSaveOutputToFlashScopeOnRedirect(true);
    return handlerAdapter;
}

@Bean
public ViewFactoryCreator mvcViewFactoryCreator() {
    MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
    factoryCreator.setUseSpringBeanBinding(true);
    return factoryCreator;
}

假设我的流程是正确的,我在这里做错了什么?如何在需要时从我的/auth 端点重定向到login-flow?我目前收到以下错误:

java.io.FileNotFoundException: Could not open ServletContext resource [/webflow/login-flow.xml]

所以也许我的路径是错误的?流程在resources/webflow里面,所以我觉得是对的,但也许不是?

【问题讨论】:

    标签: spring spring-mvc spring-boot spring-webflow


    【解决方案1】:

    您的 WAR 根目录中有 /webflow/login-flow.xml 文件吗?我认为这就是那个错误所表明的,它找不到那个文件。我相信您的重定向工作正常,并且您的 WebFlow 配置希望在您指定的位置找到流配置文件,但在那里找不到。

    我没有使用过Java-based WebFlow configuration before,所以我可能会误解这一点,但最好我读过这个,我认为即使您在 Java 中进行其余配置,您可能仍然需要 Flow xml 文件。

    Configure Spring Web Flow with Java configuration

    【讨论】:

    • 我在webflow 目录中确实有那个login-flow.xml,这也是我如此困惑的原因。它为我提供了我希望看到的路径,但由于某种原因似乎无法找到它。
    • webflow目录在哪里?你之前说过resources/webflow。文件的完整路径是什么,从战争的根目录开始?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多