Прервано сопоставление URL для действий, отличных от индекса в автономном приложении WAR для Grails 3
Я новичок в GRAILS, но я создал простое приложение и пытаюсь развернуть его на Tomcat.
Если я запускаю приложение, используя:
grails prod run-app
все отлично работает Однако, если я соберу его в файл войны
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 обязательно должен быть найден, потому что он указан и связан с таблицей в индексе.
У меня огромное количество проблем, чтобы разобраться в этом, потому что я не могу найти какой-либо обратной связи от запущенного файла войны, запускаю ли я его в tomcat или напрямую, даже если я перемещаю среды в test или dev. Theres просто ничего в файлах журнала или stdout.
Вот мои 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 ответа
Моя проблема была с Grails 3.2.1. После того, как я обновил до Grails 3.2.2, сделал чистку gradle, затем переупаковал, все работает отлично.
У меня та же проблема с Grails 3.2.2.
Не могу получить "/" для загрузки. Я использую пространства имен, поэтому мое отображение выглядит
"/"(namespace: 'corp', controller: 'index', action: 'index')
с
com.example.corp.IndexController {
static namespace = 'corp'
def index() {)
}
Все работает правильно в любой среде с Grails Run-App, но когда я запускаю и запускаю, это выдает мне страницу с ошибкой.