【问题标题】:Grails deployment to tomcat, only some links workingGrails部署到tomcat,只有一些链接有效
【发布时间】:2012-07-12 22:11:50
【问题描述】:

我已将我的应用程序部署到运行 tomcat6 的 ubuntu 服务器上。我通过 WAR 文件进行了部署,并将其重命名为 ROOT。当我转到基本 url 时,我收到一个 404 错误,提示找不到“index.jsp”。我在 grails 常见问题解答网站上发现,这意味着它已经尝试找到 gsp 但无法找到它——但是,我已经在提取的战争中验证了它确实存在,确实存在。

我的默认设置指向调用 index() 的 HomeController,并且在提取的 WAR 下的视图文件夹中存在一个对应的 /home/index.gsp。

现在为了增加一些混乱,我有另一个控制器 ContactController 和相同的视图设置(即 Contact/index.gsp),那个可以工作!事实上,在我拥有的 5 个控制器中,它是唯一一个显然可以找到视图的控制器,即使每个视图在各自的视图文件夹中都被命名为 index.gsp。

我不确定它是否与应用程序本身有关,因为它使用运行应用程序工作(尽管我当然不会排除它)。我的猜测是它与服务器相关,但所有文档都说将 WAR 简单地放在 /webapps/ 目录中并重新启动。

有什么建议吗?

更新:UrlMappings.groovy:

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?"{
            constraints {
                // apply constraints here
            }
        }

        "/"(controller:"home", action:"index")
        "500" (view: '/error')
    }
}

确切的错误:

请求的资源(/WEB-INF/grails-app/views/home/index.jsp)是 不可用

【问题讨论】:

  • 你能发布你的 UrlMappings.groovy 文件吗?
  • 我已将其添加到问题中。我的控制器被命名为“HomeController”而不是“homeController”。这有关系吗?
  • 这一切对我来说都是正确的。小写是指控制器时应该使用的。可以直接去/appName/home/index吗?接下来,您可以从home 控制器添加您的index 操作吗?
  • @Kelly 我也采取了行动。我收到错误消息:“请求的资源 (/WEB-INF/grails-app/views/home/index.jsp) 不可用。”还是
  • 我在问题中看不到 index 控制器操作。您在单个 index.gsp 文件中执行的操作会导致它们无法编译吗?

标签: tomcat grails deployment tomcat6


【解决方案1】:

我们最近遇到了这个问题。确保您的控制器位于与目录结构相对应的正确包中。

例如:

package com.mypackage

class HomeController {
   def index = {
   }
}

位于 ./grails-app/controllers/com/mypackage。

【讨论】:

    【解决方案2】:

    如果您在根映射中为操作和控制器命名,它会起作用吗?

    "/"(controller:"home", action:"index")
    

    【讨论】:

    • 不 :( 另外,请记住,家庭不是唯一不加载的,只有一个特定的控制器 + 视图有效。
    【解决方案3】:

    您必须在 context.xml 文件中的 Context 标签中添加 'allowLinking="true" ' 属性

    您可以在 ${TOMCAT_HOME}\conf 文件夹中看到 context.xml 文件

    【讨论】:

      猜你喜欢
      • 2018-11-06
      • 2012-07-09
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      相关资源
      最近更新 更多