我正在尝试使用 joinfaces 库将 webflow 添加到 spring boot 应用程序。
我正在使用 primefaces-spring-boot-starter 和 jetty-spring-boot-starter 来配置码头服务器。
为 pom 添加了必要的 webflow 依赖项,并配置了必要的 flowregistry、flowbuilderservices、flowexecutor 和 flowhandlermapping,...
应用程序正确启动,从 xmls 读取流定义,如果通过 url 进入流,则决策状态正在正确运行,读取相应的视图状态 .xhtml 文件,调用托管 bean 方法,并且一切都运行良好。
但是......一旦完成执行bean方法,当我希望在浏览器中呈现html时,应用程序被重定向到应用程序根文件夹,并且日志中没有任何错误。
我在应用程序的所有流程中都有这种行为。Bean 方法正确执行,当我希望看到 html... 重定向到 root 时。
有人尝试将 webflow 成功添加到 joinfaces jsf 应用程序吗?我缺少覆盖连接面的一些默认配置吗?
谢谢。
public class MvcConfiguration implements WebMvcConfigurer {
@Autowired
private WebFlowConfiguration webFlowConfiguration;
@Bean
public FlowHandlerMapping flowHandlerMapping() {
FlowHandlerMapping handlerMapping = new FlowHandlerMapping();
handlerMapping.setOrder(-1);
handlerMapping.setFlowRegistry(this.webFlowConfiguration.flowRegistry());
return handlerMapping;
}
@Bean
public FlowHandlerAdapter flowHandlerAdapter() {
JsfFlowHandlerAdapter adapter = new JsfFlowHandlerAdapter();
adapter.setFlowExecutor(this.webFlowConfiguration.flowExecutor());
return adapter;
}
@Bean
public ViewResolver faceletsViewResolver() {
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setViewClass(JsfView.class);
resolver.setPrefix("/");
resolver.setSuffix(".xhtml");
return resolver;
}
}
@Configuration
public class WebFlowConfiguration extends AbstractFacesFlowConfiguration {
@Bean
public FlowDefinitionRegistry flowRegistry() {
return getFlowDefinitionRegistryBuilder()
.setBasePath("classpath*:/META-INF/resources/flows")
.addFlowLocationPattern("/**/*.xml")
.setFlowBuilderServices(flowBuilderServices())
.build();
}
@Bean
public FlowBuilderServices flowBuilderServices() {
return getFlowBuilderServicesBuilder()
.setDevelopmentMode(true)
.setViewFactoryCreator(new JsfViewFactoryCreator())
.build();
}
@Bean
public FlowExecutor flowExecutor() {
return getFlowExecutorBuilder(flowRegistry())
.addFlowExecutionListener(new FlowFacesContextLifecycleListener())
.addFlowExecutionListener(new SecurityFlowExecutionListener())
.setMaxFlowExecutionSnapshots(0)
.build();
}
}