【发布时间】: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