1

我正在尝试使用 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();
    }

}
4

0 回答 0