Grails 使用run web运行应用程序时从webflow解析视图

Grails 使用run web运行应用程序时从webflow解析视图,grails,grails-plugin,spring-webflow,Grails,Grails Plugin,Spring Webflow,我有一个grails应用程序,它使用插件来模块化应用程序。app的结构如下: pluginA 插件 插件 在其中一个插件(比如说pluginA)上,我有一个使用springwebflow(使用springwebflow2.0.8.1)的控制器 插件在pluginMain的BuildConfig.groovy中本地解析(grails.plugin.location.pluginA'=“./pluginA” grails.plugin.location.pluginB'=“./pluginB”)

我有一个grails应用程序,它使用插件来模块化应用程序。app的结构如下:

  • pluginA
  • 插件
  • 插件
在其中一个插件(比如说pluginA)上,我有一个使用springwebflow(使用springwebflow2.0.8.1)的控制器

插件在pluginMain的BuildConfig.groovy中本地解析(grails.plugin.location.pluginA'=“./pluginA” grails.plugin.location.pluginB'=“./pluginB”)

使用运行应用程序运行应用程序时,webflow使用的视图将重新显示为OK

但是,当我使用运行app时,来自pluginA的run war控制器尝试从位置pluginMain/WEB-INF/grails app/views/controllerName/flowName/nameOfView.jsp解析视图,而不是从pluginA 所以我得到了HTTP404NotFound错误

我正在使用Grails2.3.7和JavaJDK1.7


请帮忙

它在运行战争情况下寻找的位置是解析页面和流视图的标准位置。尝试使用内联插件(grails.plugin.location)创建war文件可能会遇到麻烦

内联插件支持在开发插件功能时非常好,但它也有它的怪癖,特别是当您有多个依赖插件在使用时。在某个时候,你必须崩溃并开始发布你的插件

尝试使用“Maven install”命令将插件发布到本地Maven存储库。然后更改BuildConfig.groovy文件以引用插件的安装版本

我的正常工作流程如下所示:

  • 使用BuildConfig.groovy中的内联插件定义开发新的插件功能,使用run app和run test进行测试,直到我满意为止

  • 发布插件的快照版本(即1.0.1-SNAPSHOT),并更新BuildConfig.groovy以指向快照,并使用run app和run war进行测试,例如:

    编译(“:kpi:1.0.1-SNAPSHOT”)

  • 如果您想与同事共享插件(发布插件),可以将插件发布到本地maven存储库(maven安装)或公共存储库(如本地运行的Artifactory)


  • 您应该阅读关于插件和配置的指南部分,了解设置存储库的详细信息。

    我按照您的建议做了,但结果是一样的。我甚至将项目升级到Grails2.4.3和webflow 2.1的新版本。不知何故,webflow视图是使用path/WEB-INF/grails-app/views/controller/flowName/page.gspOK解析的,它一定与pluginMain位有关。通常,您会在应用程序中使用特定于应用程序的构件(域、控制器、服务、视图),并在插件中使用一个或多个共享功能部件。将应用程序逻辑也放入插件中有些不寻常。话虽如此,它仍应有效。它肯定对我们有用,我们大量使用嵌入webflow的插件。我真的不能提供更多的指导,除了尝试将pluginMain逻辑移回应用程序,看看这是否能纠正它。我终于找到了答案。问题在于如何命名我的webflow视图。我的视图被命名为小写,但在控制器webflow中,闭包名称是驼峰大小写(例如brandSelection{…},视图名称是brandSelection.gsp)。当用run app运行应用程序时,它不知何故起了作用,但当应用程序打包在war视图中时,无法解决问题。请注意:pluginMain实际上是应用程序本身而不是插件,我在示例中错误地命名了它。无论如何,非常感谢你的帮助和建议。