圣杯战争不显示视图



我在使用 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文件作为就地插件。
  • 我的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.

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

如果我没记错的话,我们项目中遇到了完全相同的问题。

问题是(对您来说可能是一样的)我们为插件设置了两个版本。

一个是在应用程序属性中设置

app.version=0.1

并且比插件描述符中有一个集

def version = "0.1"

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

即使在阅读此线程后,这也让我发疯了几天。

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

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

当你使用插件来提供资源时,你需要添加 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'
  }
}

我"修复"了它,但我完全不知道为什么它会起作用。

我记得我已经将我的就地插件的版本从"0.1"提升到"1.0"。自从这样做以来,当我发动战争时,该应用程序就不起作用了。将插件版本从 1.0 改回 0.1 已解决此问题。

谁能解释为什么会这样?我也清理并重新编译了 UI 插件,但在我重新调整版本之前,这从未奏效。

相关内容

  • 没有找到相关文章

最新更新