Изменить URL после отправки формы, но при отображении представления в Grails - PullRequest
0 голосов
/ 09 января 2012

Привет, сообщество Grails, где бы вы ни находились!У меня крутая проблема ... или даже идея.И мне нужна помощь.

Я пытаюсь сделать следующее:

  1. Отправить форму поиска с фразой.Допустим, «брюки».
  2. Значение передается в / search / list (searchController => метод списка)
  3. Вызывает искатель, возвращающий список брюк в разных магазинах (a, b, c)и различные категории (aaa, bbb, ccc) в результате.
  4. По умолчанию / search / list является отображаемым URL, где я могу показать список, но вместо ...

myapp.com / search / list? Search = брюк

Я хотел бы показать URL в браузере следующим образом:

myapp.com / abc / aaa-bbb-ccc? Search= брюки

без перенаправления с помощью urlMapping и, таким образом, повторного вызова метода списка.

Конечно, тот же набранный URL без отправки формы поиска даст тот же список брюк, только у меня будет большекритерии в начале (магазины = [a, b, c], категории = [aaa, bbb, ccc] и искомая фраза «брюки»).

Надеюсь, я звучу достаточно ясно.Мышление из коробки ценится.

PS.Может быть, вы знаете какие-то решения на Ruby, Java или PHP, чтобы справиться с такой ситуацией?

1 Ответ

0 голосов
/ 09 января 2012

ну, вы можете использовать для этого urlmappings.

"/$shops/$categories/$search" {
 controller = "search"
 action = "list"
 constraints {
      shops(matches:/\w-\w-\w/)
      categories(matches:/\w+-\w+-\w+/)
 }
}

Если мое соответствие регулярному выражению верно, то это будет соответствовать myapp.com/a-b-c/aaa-bbb-ccc?search=pants и будет соответствовать myapp.com/a-b-c/aaa-bbb-ccc/pants

Я думаю, вы также можете добавить некоторую предварительную обработку в urlmappings, например, вы могли бы сделать

"/$shops/$categories/$search" {
  ...
  shops = shops.split('-')
  categories = categories.split('-') 
  ...
}

Однако я не уверен на 100% в этом.

...