Spring Web Flow flowExecutionUrl为空

问题描述 投票:0回答:1

我通过Spring Web Flow制作简单的订单流程,我的项目也有Spring MVC。我按照指南做了一切,但我的网络应用程序根本没有对我的流程做出反应。 Spring Web Flow配置:

     @Configuration
     @ComponentScan(basePackages = "config")
     public class WebFlowConfig extends AbstractFlowConfiguration {
@Bean
public FlowBuilderServices flowBuilderServices() {
    return getFlowBuilderServicesBuilder()
            .setViewFactoryCreator(mvcViewFactoryCreator())
            .setDevelopmentMode(true).build();
}

@Bean
public MvcViewFactoryCreator mvcViewFactoryCreator() {
    MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
    factoryCreator.setViewResolvers(

    Collections.singletonList(this.webMvcConfig.resourceViewResolver()));
    factoryCreator.setUseSpringBeanBinding(true);
    return factoryCreator;
}
@Autowired
private DispatcherConfig webMvcConfig;

@Bean
public FlowDefinitionRegistry flowRegistry() {
   FlowDefinitionRegistry registry = getFlowDefinitionRegistryBuilder().addFlowLocation("/WEB-INF/flows/order/flowcnf.xml","order").build();
   return registry;
}

@Bean
public FlowExecutor flowExecutor() {
    return

            getFlowExecutorBuilder(flowRegistry()).build();
}

@Bean
public FlowHandlerMapping flowHandlerMapping(){
    final FlowHandlerMapping handeler = new FlowHandlerMapping();
    handeler.setFlowRegistry(flowRegistry());
    handeler.setFlowUrlHandler(defaultFlowUrlHandler());
    return handeler;
}
@Bean
public DefaultFlowUrlHandler defaultFlowUrlHandler(){
    return new DefaultFlowUrlHandler();
}

@Bean
public FlowHandlerAdapter adapter(){
    FlowHandlerAdapter adapter = new FlowHandlerAdapter();
    adapter.setFlowUrlHandler(defaultFlowUrlHandler());
    adapter.setFlowExecutor(flowExecutor());
    return adapter;
}
}

正如我所说,我使用Spring MVC可能会因为它而出现问题。

下面的代码片段必须运行“thankCustomer”视图状态,但事实并非如此。如果我点击链接,我会收到404错误。

<a class=button href="${flowExecutionUrl}&_eventId=thankCustomer">Замовити!</a>

和流程代码:

<?xml version="1.0" encoding="UTF-8"?>
  <flow xmlns="http://www.springframework.org/schema/webflow"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/webflow 
  http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd"
  start-state="identify">
<var name="order" class="entity.BookOrder"/> 

<subflow-state id="identify" subflow="order/custom" >
    <output name="user" value="order.custName" />
    <transition on="userIsReady" to="buildOrder"/>
</subflow-state>

<subflow-state id="buildOrder" subflow="order/build">
    <input name="order" value="order" />
    <transition to="takePayment" on="orderBuilt" />
</subflow-state>


<subflow-state id="takePayment" subflow="order/takePayment" >
    <input name="order" value="order"/>
    <transition on="paymentTaken" to="saveOrder" />
</subflow-state>
<action-state id="saveOrder">
    <evaluate expression="userServiceImpl.addOrder(order.custName,order)"/>
    <transition to="thankCustomer" />
</action-state>

<view-state id="thankCustomer" view="/WEB-INF/pages/greeting.jsp" >
    <transition to="end-point" />
</view-state>

<end-state id="end-point"/>

<global-transitions>
    <transition on="cancel" to="end-point" />
</global-transitions>

</flow>

我试图把流ID(订单)而不是空的flowExecutionUrl,但仍然是同样的错误,我会感激任何一点帮助。

spring spring-webflow
1个回答
1
投票

我需要为我的Flow HandlerMapping Bean设置“order”,因为我已经有2个视图解析器。

© www.soinside.com 2019 - 2024. All rights reserved.