2014-09-15 5 views
1

В настоящее время я использую Spring MVC 4.0.5 и хотел бы использовать Spring Web Flow для некоторых ориентированных на процесс страниц. Однако, я думаю, что все еще есть некоторые проблемы с моей конфигурацией.Spring Web Flow и Spring MVC URL 404

В логах сервера:

2014-09-15 20:54:49,280 [localhost-startStop-1] DEBUG org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl - Registering flow definition 'ServletContext resource [/WEB-INF/flows/registration/registration-flow.xml]' under id 'registration' 

Однако при доступе к нему, журнал говорит

2014-09-15 20:54:49,820 [http-bio-8080-exec-2] DEBUG org.springframework.webflow.mvc.servlet.FlowHandlerMapping - No flow mapping found for request with URI '/appContext/registration/' 

Вот моя конфигурация для веб-потока

@Configuration 
public class WebFlowConfig extends AbstractFlowConfiguration { 

private Logger logger = Logger.getLogger(WebFlowConfig.class); 

@Bean 
@Autowired 
public FlowExecutor flowExecutor(FlowDefinitionRegistry flowRegistry, 
     PlatformTransactionManager txManager, SessionFactory sessionFactory) { 
    return getFlowExecutorBuilder(flowRegistry) 
      .addFlowExecutionListener(new SecurityFlowExecutionListener(), 
        "*") 
      .addFlowExecutionListener(
        new HibernateFlowExecutionListener(sessionFactory, 
          txManager), "*").build(); 
} 

@Bean 
@Autowired 
public FlowDefinitionRegistry flowRegistry(
     FlowBuilderServices flowBuilderServices) { 
    return getFlowDefinitionRegistryBuilder(flowBuilderServices) 
      .setBasePath("/WEB-INF/flows") 
      .addFlowLocationPattern("/**/*-flow.xml").build(); 
} 

@Bean 
@Autowired 
public FlowBuilderServices flowBuilderServices(
     MvcViewFactoryCreator mvcViewFactoryCreator, Validator validator) { 
    return getFlowBuilderServicesBuilder() 
      .setViewFactoryCreator(mvcViewFactoryCreator) 
      .setValidator(validator).setDevelopmentMode(true).build(); 
} 

@Bean 
@Autowired 
public MvcViewFactoryCreator mvcViewFactoryCreator(
     InternalResourceViewResolver viewResolver) { 
    MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator(); 
    factoryCreator.setViewResolvers(Arrays.asList(viewResolver)); 
    return factoryCreator; 
} 

@Bean 
@Autowired 
public FlowHandlerMapping flowHandlerMapping(FlowDefinitionRegistry registry) { 
    FlowHandlerMapping handlerMapping = new FlowHandlerMapping(); 
    handlerMapping.setOrder(-1); 
    handlerMapping.setFlowRegistry(registry); 
    return handlerMapping; 
} 

@Bean 
@Autowired 
public FlowHandlerAdapter flowHandlerAdapter(FlowExecutor executor) { 
    FlowHandlerAdapter handlerAdapter = new FlowHandlerAdapter(); 
    handlerAdapter.setFlowExecutor(executor); 
    handlerAdapter.setSaveOutputToFlashScopeOnRedirect(true); 
    return handlerAdapter; 
} 
} 

надежда, что кто-то может помочь. Благодарю.

ответ

0

Вы задаете FlowHandlerMapping в WebFlow конфигурации:

Implementation of HandlerMapping that follows a simple convention 
    for creating URL path mappings from the ids of registered flow definitions. This 
    implementation returns a FlowHandler that invokes a flow if the current request 
    path matches the id of a flow in the configured FlowDefinitionRegistry. 

по умолчанию реализация FlowUrlHandler для Spring Web Flow является DefaultFlowUrlHandler.

Expects URLs to launch flow to be of this pattern: 

    http://<host>/[app context path]/[app servlet path]/<flow path> 

    The flow id is treated as the path info component of the request URL string. 
    If the path info is null, the servletPath will be used as the flow id. Also, if 
    the servlet path ends in an extension it will be stripped when calculating the flow id. 
    The flow definition URL for the given flow id will be built by appending the 
    flow id to the base app context and servlet paths. 

Нет картирование потока найдено для запроса с URI «/ контекст приложения/регистрации /»

Ваша информация путь должен быть нулевым и отображение сервлета является что-то вроде:/контекста приложения/регистрации/*, в результате чего идентификатор потока как/appContext/registration/который не зарегистрирован. Итак, проверьте отображение сервлетов.

0

Удалить определение MvcViewFactoryCreator и .setViewFactoryCreator (mvcViewFactoryCreator)