我一直在尝试将我的一些 grails 2 代码移植到 grails 3。这个特定的代码使用 grails-webflow 插件(直到 grails 2.x 才被支持;它现在被破坏了,因为 grails 核心中的一些大修)。
所以我决定在我的应用程序中直接使用spring webflow。我已经能够做基本的管道。那就是我已经为 webflow 设置 * 应用程序上下文 * 创建了流工厂,并且所有 * 都编写了流 xml。* 创建了其他必要的 bean。
现在,当我点击映射到我的流程的 url 时,我可以看到我的 .gsp 页面正在呈现。但问题是,它没有解决布局。页面即将到来,没有任何样式/布局。我错过了什么?
这是我的gsp page
。
<html>
<head>
<title><g:brandedTitle/> - Repository Database: Administrator</title>
<meta content="main" name="layout"/>
<script type="text/javascript" src="${assetPath(src: 'da.js')}"></script>
....
....
这就是我为 webflow 完成管道的方式。
@Configuration
@ComponentScan
class InstallRepositoryWebflow extends AbstractFlowConfiguration {
@Autowired
GroovyPagesTemplateEngine groovyPagesTemplateEngine;
@Autowired
GroovyPageLocator groovyPageLocator;
@Autowired
GrailsLayoutViewResolver grailsLayoutViewResolver;
@Bean
public FlowDefinitionRegistry flowRegistry() {
return getFlowDefinitionRegistryBuilder(flowBuilderServices())
// type on browser localhost:<port>/<context-path>/hitMeToInvokeThisFlow to invoke this flow.
.addFlowLocation("/WEB-INF/flows/install-repository.xml", "installrep/install")
.build();
}
@Bean
public FlowExecutor flowExecutor() {
return getFlowExecutorBuilder(flowRegistry()).build();
}
@Bean
public FlowBuilderServices flowBuilderServices() {
return getFlowBuilderServicesBuilder()
.setViewFactoryCreator(viewFactoryCreator())
.build();
}
@Bean
public ViewFactoryCreator viewFactoryCreator() {
List<ViewResolver> resolvers = new ArrayList<>(1);
resolvers.add(gspViewResolver());
resolvers.add(grailsLayoutViewResolver);
ViewFactoryCreator creator = new MvcViewFactoryCreator();
creator.setViewResolvers(resolvers);
return creator;
}
@Bean
ViewResolver gspViewResolver() {
GroovyPageViewResolver innerGspViewResolver = new GroovyPageViewResolver(groovyPagesTemplateEngine, groovyPageLocator);
//innerGspViewResolver.setAllowGrailsViewCaching(!gspReloadingEnabled || viewCacheTimeout != 0);
//innerGspViewResolver.setCacheTimeout(gspReloadingEnabled ? viewCacheTimeout : -1);
return innerGspViewResolver;
}
}
这是来自的相关部分resource.groovy
flowHandlerAdapter(FlowHandlerAdapter) {
flowExecutor = ref("flowExecutor");
}
flowHandlerMapping(FlowHandlerMapping) {
flowRegistry = ref("flowRegistry");
}
问题是为什么我的布局没有被渲染?我错过了什么?