如何通过链接启动Spring Webflow

时间:2018-06-17 10:44:29

标签: spring thymeleaf spring-webflow

我想使用Spring Webflow为在线商店进行结账。我已经看了几个教程来弄清楚如何配置所有东西,但我无法让它工作。我认为问题可能出在结帐的网址上,但我无法找到解释如何解雇第一个动作状态的任何来源。
我目前的代码:

<strong>checkout-flow.xml</strong>
    <var name="order" class="com.webstore.domain.Order"/>

    <action-state id="addCartToOrder">
        <evaluate expression="cartService.validate(requestParameters.cartId)" result="order.cart" />
        <transition to="invalidCartWarning" on-exception="com.webstore.exception.InvalidCartException" />
        <transition to="collectCustomerInfo" />
    </action-state>

WebFlowConfig.java:

@Configuration
public class WebFlowConfig extends AbstractFlowConfiguration {

    @Bean
    public FlowDefinitionRegistry flowRegistry() {
        return getFlowDefinitionRegistryBuilder()
                .addFlowLocation("/templates/flows/checkout/checkout-flow.xml", "checkout")
                .build();
    }

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

        return handlerMapping;
    }

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

        return handlerAdapter;
    }
}

Current Directory Structure

我认为问题在于URL的配置方式......我尝试了几种组合,所以我不知道如何将它们放在一起...目前它是:

<a th:href="@{/flows/checkout}"> Check out  </a>

但这不起作用。任何有关我出错的建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

事实证明,我需要在webflowconfig文件中添加classpath:前缀...来自我咨询过的其他资源,这似乎是使用Spring Boot的方法,因为文件结构不同当包装成罐子时。