对于Grails 3 App的独立WAR中的索引以外的操作,URL映射已中断

时间:2016-10-30 01:34:46

标签: java tomcat war urlmappings.groovy grails3

我是GRAILS的新手,但我构建了一个简单的应用程序,我正在尝试将其部署到tomcat。

如果我使用以下方式运行应用程序:

grails prod run-app
一切正常。但是,如果我将它构建为war文件

grails prod war

然后将war包上传到tomcat服务器或直接运行它,如

java -Dgrails.env=prod -jar build\lib\app.war

然后我得到了这种奇怪的行为,一开始看起来一切都很好,但每当我点击索引以外的某个动作的链接时,我都会收到404错误。 例如。

     webapp:8080/employee           WORKS
     webapp:8080/employee/index     WORKS
     webapp:8080/employee/show/1    404 error
     webapp:8080/department         WORKS
     webapp:8080/department/show/1  404 error

在上面的示例中,webapp:8080 / employee / show / 1肯定会被找到,因为它是从索引中的表中列出和链接的。

我遇到了很多麻烦,因为我似乎无法从正在运行的war文件中找到任何反馈,无论我是在tomcat中运行还是直接运行,即使我将环境移动到测试或开发。在日志文件或标准输出中没有任何内容。

这是我的UrlMappings

package generico

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
                // apply constraints here
            }
        }

        // "/"(view:"/index")
        "/"(controller:"employee", action:"index")
        "500"(view:'/error')
        "404"(view:'/notFound')
    }
}

如果我为任何环境做“grails run-app”,那么一切都运行得很好。

我感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

我在Grails 3.2.2中遇到了同样的问题。

无法获得" /"载入。我使用名称空间,所以我的映射看起来像

"/"(namespace: 'corp', controller: 'index', action: 'index')

com.example.corp.IndexController {
  static namespace = 'corp'
  def index() {)
}

在使用grails run-app的任何环境中,一切正常,但是当我战争并运行时,它会给我一个错误页面。

答案 1 :(得分:0)

我的问题出在Grails 3.2.1上。在我更新到Grails 3.2.2之后,做了一个gradle清理,然后重新包装,一切正常。