J'ai essayé la fonction de configuration Java de Spring Web Flow 2.4 en modifiant un projet existant de la configuration xml à JavaConfig. La version XML fonctionne, mais pas JavaConfig. Chaque fois que j'essaie de démarrer le flux avec l'URL http://localhost:8080/sia_p219_ch08_spring_web_flow_order_pizza_customer_flow_complete/pizza, il renvoie 404. Il n'y a aucune exception. La console ne montre aucun message "aucun mappage de requête trouvé pour ...". La page Web montre The origin server did not find a current representation for the target resource or is not willing to disclose that one exists
.JavaConfig Spring Web Flow renvoie 404 non trouvé (JSP)
Le projet est hébergé sur github, la version XML de travail est here.
Je pense que le problème est que l'URL de demande n'appelle pas le flux de pizza (/WEB-INF/flows/pizza/pizza-flow.xml
).
Voici quelques extraits de code:
WebAppInitializer:
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
// map DispatcherServlet to/
protected String[] getServletMappings() {
return new String[] { "/" };
}
RootConfig:
@Configuration
@Import({WebFlowConfig.class})
public class RootConfig {}
WebFlowConfig:
@Configuration
@ComponentScan({"pizza"})
public class WebFlowConfig extends AbstractFlowConfiguration {
static{
System.out.println("WebFlowConfig loaded");
}
@Autowired
private WebConfig webMvcConfig;
@Bean
public FlowDefinitionRegistry flowRegistry() {
return
getFlowDefinitionRegistryBuilder(flowBuilderServices())
.setBasePath("/WEB-INF/flows")
.addFlowLocationPattern("/**/*-flow.xml")
.build();
}
@Bean
public FlowExecutor flowExecutor(){
return getFlowExecutorBuilder(flowRegistry()).build();
}
@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.viewResolver()));
factoryCreator.setUseSpringBeanBinding(true);
return factoryCreator;
}
}
WebConfigLes fichiers de définition de flux et les pages JSP sont corrects et vous pouvez les voir sur github si vous le souhaitez.
Merci beaucoup, toute aide est grandement appréciée.
J'ai suivi un tutoriel en ligne mais sa configuration ne correspond pas à mon application. Cette réponse fonctionne. – fall