Grails «ответить» отображает неправильное представление при запуске из файла .war

Приложение Grails имеет много автоматически сгенерированного (из стандартных скаффолдингов Grails 2.3.0) кода с использованием нового RESTful "реагировать" особенность. Например, методы индекса обычно выглядят так:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    respond Alpha.list(params), model:[alphaInstanceCount: Alpha.count()]
}

Это работает совершенно нормально, когда приложение запускается как "Grails Run-App " однако происходит сбой, когда приложение упаковано как .war и запускается таким образом внутри не встроенного контейнера сервлета.

Это работает для первой используемой комбинации контроллер / представление, но для последующих использует папку представления первого представленного представления. Например, если мы попробуем/alpha/index сначала, а потом потом/beta/index тогда/alpha/index будет работать нормально, но/beta/index буду использовать/alpha/index.gsp для рендеринга (вместо ожидаемого/beta/index.gsp).

Однако, если я изменю метод на:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    render(view: 'index', model:[alphaInstanceList: Alpha.list(params), alphaInstanceCount: Alpha.count()])
}

тогда он отлично работает в обоих вариантах развертывания.

Я добавил отладочный код в некоторые из .gsp-s для вывода,${this.getGroovyPageFileName()}${controllerName} а также .${actionName}

Это показывает, что, хотя имена контроллера и действия всегда являются ожидаемыми, представление, используемое для представлений, отображаемых после первого, остается представлением, использованным для первого.

Например, начальный вызов для/alpha/index имеет контроллер какalpha, действие какindexи рассматривать как/WEB-INF/grails-app/views/alpha/index.gsp, Тем не менеепоследующий вызов из/beta/index имеет контроллер какbeta, Посмотреть, какindex, но рассматривать как (/WEB-INF/grails-app/views/alpha/index.gspзаметьте неправильноальфа" Вот). Последующие призывыalpha оставайся в порядке.

Если бы мы начали с беты, а потом перешли на альфу, все было бы наоборот (beta Это хорошо,alpha сломано).

Я попытался запустить его под JPDA, но, хотя моя IDE, похоже, подключается, он фактически не достигает точек останова (возможно, это не связано с этой проблемой).

м с использованием Grails 2.3.0, JDK 1.6 и Tomcat7.

Там нет ничего плохого, что я могу видеть в журналах.

Любые идеи, в чем может быть проблема, или даже просто, как подойти к ее устранению?

http://goo.gl/aFKYYb <- приложение Grails

http://goo.gl/aDP6Lx <файл .war

Ответы на вопрос(2)

Ваш ответ на вопрос