Grails использует непостоянный URI перенаправления, когда для того же контроллера - PullRequest
0 голосов
/ 31 декабря 2011

У меня в приложении Grails простой контроллер с простыми отображениями ...

TCacheController {
  def index ={}
  def list= {}

}

"/tcache/" (controller: "TCache"){
   action = [GET: "index"]
}

"/tcache/items" (controller: "TCache"){
   action = [GET: "list"]
}

Все мои URL имеют вид http: //.../tcache/*, и все работает отлично. Проблема возникает, когда я использую <g:actionSubmit> в таком виде ...

<g:form controller="TCache">

   <g:actionSubmit class="delete" action="list" value="List Items">

Подтверждение работает, но в моем действии со списком у меня есть перенаправление на случай, если что-то идет не так, и это перенаправление приводит к 404, потому что Grails отправляет на /TCache/.., а не /tcache/...

При каких обстоятельствах Grails меняет верхний / нижний регистр URI, и есть ли способ заставить его всегда использовать /tcache? Я попытался использовать controller = "tcache" в форме, но затем действие перестало работать, возможно, из-за того, что Grails не может найти контроллер.

1 Ответ

1 голос
/ 06 января 2012

Мне удалось выяснить это самостоятельно.Соглашение Grails о конфигурации великолепно, но иногда Grails не всегда правильно угадывает.

В контроллере при рендеринге представления буквальные пути гарантируют, что Grails не нужно будет ничего угадывать ...

TCacheController {
  def index ={}
  def list= {
     render( view: "/tcache/listitems", model:[])
}

вместо ...

render( view: "listitems", model:[])

В моем случае, имея несколько контроллеров, кажется, что Grails немного запутался и попытался поставить префикс /TCache/.. для полного пути представления рендера, когда ондолжен был использовать /tcache/listitems.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...