Как найти в GSP, с какого действия контроллера он был вызван? - PullRequest
1 голос
/ 11 мая 2011

Я новичок в Grails и застрял с другой проблемой.

У меня есть две формы в моем единственном GSP search.gsp и у меня есть два действия в моем контроллере serachи результаты .

Теперь, когда я нажимаю на кнопку поиска в одном из моих файлов GSP, он приводит меня к поисковому действию , которое отображает меня search.gsp. На этот раз должно отобразитьсяЯ только первая форма в нем.когда я нажимаю кнопку результатов в этой форме, я перехожу на действие результатов ., которое имеет строку кода.

redirect (action: "search", params: [merchants: merchant, address: address])

это вернет меня к поисковому действию, но теперь я хочу отобразить 2-ю форму в search.gsp ..

Моя проблема

  • как я могу выполнить поисковое действие один раз для запуска без параметров и один раз с параметром?
  • как определить в GSP, из какого действия оно было вызвано?

с благодарностью.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

В зависимости от того, насколько разные ваши формы, вы можете рассмотреть возможность использования двух отдельных файлов GSP (например, search.gsp и results.gsp).Используйте render(view:'action', model:[...]) для визуализации другого представления в контроллере.Часто становится понятнее, что один файл содержит множество условных выражений.

В противном случае вы можете узнать действие, используя ${params.action}, например:

<g:if test="${params.action == 'search'}">
   Text to show if the action is search
</g:if><g:else>
   Text to show if the action is results
</g:else>
0 голосов
/ 11 мая 2011

Я бы посоветовал вам отделить страницу результатов в виде шаблона (_search.gsp) и отобразить ее из действия с результатами. Вот так у вас будут разные формы в разных файлах.

Кстати, шаблон - это не что иное, как ответ ajax, поищите в Google подробности о шаблоне в grails.

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