既存のプロジェクトをxml設定からJavaConfigに変更することで、Spring Web Flow 2.4のJava設定機能を試しています。 XMLバージョンは動作しますが、JavaConfigは動作しません。 URL http://localhost:8080/sia_p219_ch08_spring_web_flow_order_pizza_customer_flow_complete/pizzaでフローを開始しようとするたびに、それは404を返します。例外はありません。コンソールに「no request mapping found for ...」というメッセージは表示されません。ウェブページは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が404を返さない(JSP)
このプロジェクトのホストはgithubで、作業用XMLのバージョンはhereです。
私はこの問題は、リクエストURLがピザのフロー(/WEB-INF/flows/pizza/pizza-flow.xml
)を呼び出さないことだと思います。ここで
は、いくつかのコードスニペットです:
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;
}
}
のWebConfig
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
static{
System.out.println("WebConfig loaded");
}
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/flows/");
resolver.setSuffix(".jsp");
return resolver;
}
// configure static content handling
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
フロー定義ファイルとJSPは問題なく、必要に応じてgithubに表示されます。
ありがとう、どんな助力も大歓迎です。
私はオンラインチュートリアルに従いましたが、その設定が自分のアプリに適合しません。この回答は機能します。 – fall