如何让 Spring Webflow 以 link 开始
How to get Spring Webflow started with link
我想使用 Spring Webflow 为在线商店结帐。我已经查看了几个教程来弄清楚如何配置所有内容,但我无法让它工作。我认为问题可能出在结帐的 url 上,但我找不到任何资源来解释如何触发第一个动作状态。
我当前的代码:
<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>
但这不起作用。任何关于我哪里出错的建议都将不胜感激!
事实证明我需要在 webflowconfig 文件中添加前缀 classpath:
...从我咨询过的其他来源来看,这似乎是使用 Spring 启动的方式,因为打包成jar时文件结构不同
我想使用 Spring Webflow 为在线商店结帐。我已经查看了几个教程来弄清楚如何配置所有内容,但我无法让它工作。我认为问题可能出在结帐的 url 上,但我找不到任何资源来解释如何触发第一个动作状态。
我当前的代码:
<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>
但这不起作用。任何关于我哪里出错的建议都将不胜感激!
事实证明我需要在 webflowconfig 文件中添加前缀 classpath:
...从我咨询过的其他来源来看,这似乎是使用 Spring 启动的方式,因为打包成jar时文件结构不同