【问题标题】:Grails - Plugin view pages issueGrails - 插件视图页面问题
【发布时间】:2011-01-18 10:19:48
【问题描述】:

我有一个带有域、控制器和视图页面的插件。 (使用 grails 1.3.6)

我作为独立运行插件,视图工作正常。网址:http://localhost:8080/sample-plugin/gp/list。我可以查看列表页面。

我将插件安装到主应用程序中,即插件测试。在 STS 中作为运行应用程序启动并浏览到 http://localhost:8080/plugin-test/gp/list。我可以查看列表页面。

我将应用程序捆绑为战争,即 plugin-test.war 并部署到 tomcat。当我浏览到 http://localhost:8181/plugin-test/gp/list 时,我收到 404 错误!我不确定我做错了什么。

我已经尝试解决它很长一段时间了,但仍然没有运气。相同的主应用程序在 STS 中运行良好,但在 tomcat 中却不行。

HTTP Status 404 - /plugin-test/WEB-INF/grails-app/views/gp/list.jsp

type Status report

message /plugin-test/WEB-INF/grails-app/views/gp/list.jsp

description The requested resource (/plugin-test/WEB-INF/grails-app/views/gp/list.jsp) is not available.

请帮忙。

谢谢。

杰伊·钱德兰。

【问题讨论】:

    标签: grails grails-plugin


    【解决方案1】:

    这听起来令人担忧的熟悉,因为我花了一段时间来弄清楚这个(或非常相似的)问题。我最终提出了这个 Grails 错误报告:

    Plugin layout not found in war when installed from BuildConfig.groovy

    您是否使用新的 BuidConfig 依赖技术安装了插件? JIRA 记录了我的解决方法。

    【讨论】:

    • 嗨,马丁。感谢您的答复。我没有使用 BuildConfig。我正在使用 install-plugin 命令安装插件。我的 plugin-test.war 有 \plugin-test\plugins\sample-plugin-01 目录,其中包含 css、js、图像文件。而\plugin-test\WEB-INF\plugins\sample-plugin-01\grails-app\views 拥有所有的视图页面。但是tomcat没有找到视图页面。
    • 部署的战争似乎在所有正确的目录中都有所有必需的文件,但由于某种奇怪的原因,tomcat 无法解析视图页面。
    • 我今天注意到一件事。插件页面也被复制到 WEB-INF/classes 目录!我认为这可能是原因。
    • WEB-INF/classes 还有gsp_plugin_test_webapp_WEB_INF_classes_doc_header_gsp.class之类的类文件名,好像很奇怪!
    • 嗨..谁能帮我整理一下...我仍然有这个问题。
    【解决方案2】:

    在遇到同样的问题 (1.3.7) 后分享我的一些经验教训:

    • 仔细检查您的 HTML 源代码,确保您的模板确实没有被包含在内。我的包含在内,但我的 CSS/图像 URL 错误(仅在作为战争运行时)......所以我错误地认为我的模板不存在。
    • 不要使用 ui 性能标签来引用您的静态内容...似乎不起作用,即使指定了插件属性。
    • 不要将布局命名为 main.gsp。你肯定会发生冲突。
    • 不要在您的 g:resource 标签上使用 absolute=true。即使您指定 dir="${pluginContextPath}"
    • ,这似乎也不会将 pluginContextPath 附加到绝对 url
    • 不要使用 pluginContextPath,因为它不再需要:http://grails.org/doc/latest/guide/single.html#6.3%20Tag%20Libraries(搜索“插件路径”)
    • 在插件布局的 g:resource 标签中,确保指定插件属性。将其设置为插件的名称。
    • 将静态图像/css 从插件移至 Web 服务器。如果使用您的插件的每个应用程序都有自己的副本,那么您的用户在应用程序之间跳转时将不会从缓存中受益。

    请注意,以上所有内容都适用于您的插件项目中的布局 gsp,而不是您的消费应用程序。

    【讨论】:

    • 抱歉回复晚了。这实际上是 STS 2.6.0 Groovy 编译器的问题。我在 STS JIRA 中提出了这个问题,并且已经修复。请看这里:link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多