Grails WAR不显示视图

时间:2013-10-30 19:17:13

标签: tomcat grails dependencies grails-plugin gsp

我遇到了Grails 2.2.3的问题,当我运行grails run-wargrails war然后部署到Tomcat服务器时,Spring Security添加的login / auth.gsp视图没有显示在浏览器中。但是,当我grails run-appgrails prod run-app时,它会显示并正常运行。我已经多次完成了grails clean次,以及重新编译和刷新的依赖项。

有几点需要注意:

  • 我的login/auth.gsp视图位于我正在使用的自定义UI插件中。它在 项目BuildConfig.groovy文件作为inplace插件。
  • 我的main.gsp模板也在该自定义UI插件中。

浏览器返回HTTP 404:

type Status report

message /processes/WEB-INF/grails-app/views/login/auth.jsp

description The requested resource is not available.

有谁知道这个问题可能是什么,或者我如何解决它?

4 个答案:

答案 0 :(得分:2)

如果我没记错,并且完全没错,我们的工作项目也存在同样的问题。

我们为插件设置了两个版本,问题是(并且可能与您相同)。

其中一个设置在 application.properties

app.version=0.1

并且插件描述符

中有一个集合
def version = "0.1"

如果从application.properties中删除版本声明,它应该可以工作。插件的版本是通过插件描述符设置的,对于通过application.properties设置的项目。我不知道我们最终得到了两个版本的声明,但我猜它是由于一些复制和粘贴错误或Grails用于生成插件'application.properties app.version

答案 1 :(得分:1)

即使在读完这篇帖子之后,这也让我疯了好几天。

我正在使用Grails 1.3.7,我有几个来自供应商的插件,我从git repo中提取。我最近通过从git获取更新版本升级了一些插件并遇到了这个问题。似乎当你运行grails war时,它会构建插件并在每个插件的根目录中创建一个plugin.xml文件。 plugin.xml中的元数据包含插件版本(显然是从xxxGrailsPlugin.groovy文件中获取的)。 plugin.xml中的版本用于命名插件代码在war中存储的文件夹。当您更改插件版本时会出现问题,因为Grails似乎不会重新生成plugin.xml文件。 grails clean没有做到这一点。这导致新版本的插件存储在战争中,旧版本作为其文件夹名称的一部分。

一旦我浏览了插件并删除了所有plugin.xml文件,我就可以通过war成功重建它在Tomcat上部署它而不是获得404.

答案 2 :(得分:0)

使用插件提供资源时,需要添加plugin属性。大多数Grails标签/方法都提供此属性。考虑一个名为my-plugin的插件。

使用资源:

g.resource(dir: "js", file:"myPluginJs.js", plugin: "myPlugin")

渲染插件视图:

render(view: 'path/to/view', plugin: "myPlugin")

当您声明插件资源文件时也是如此。

modules = {
  "my-plugin-module" {
    resource url: '/js/app.js', plugin: 'myPlugin'
  }
}

答案 3 :(得分:0)

我“修复”了它,但我完全不知道为什么会这样。

我记得我曾将我的inplace插件的版本从'0.1'提升到'1.0'。由于这样做,当我建立战争时,应用程序没有工作。将插件版本从1.0更改为0.1已修复此问题。

任何人都可以解释为什么这有效吗?我也清理并重新编译了UI插件,但是直到我将版本重新打下来之后才开始工作。