запросить переменные в Grails
Вопрос
РЕДАКТИРОВАТЬ:основываясь на отзывах, стер исходный Q.полностью и репост на лучшем языке
Я хочу получить доступ к переменной запроса или параметров и передать ее между контроллером и gsp.я понимаю, что объект params содержит все, что есть в строке запроса.
Все примеры, которые я вижу, основаны на модели.Я искал документацию в Интернете, и у меня есть две книги - «Начало Грааля» и «Полное руководство по Граалю», в обеих есть примеры параметров, основанные на базе данных.Я хочу понять, как можно устанавливать и получать доступ к параметрам.Все, что я везде читал, это то, что это карта переменных запроса.
Мой сценарий следующий:У меня есть контроллер, который отправляет список (не из базы данных) в GSP.Я подумал о передаче переменной «params» между GSP и контроллером.
Еще раз повторю: сценарий, который у меня есть, не основан на модели.Я хочу перебрать список элементов (без известного количества баз данных), и это управляется щелчком пользователя.Я подумал о реализации чего-то вроде того, что в Твиттере есть «кнопка больше внизу».у меня есть простая удаленная ссылка внизу страницы с новым счетчиком страниц, к которому я обращаюсь в контроллере и передаю своему классу обслуживания для новой части списка.
код контроллера:
//access params from request
int pageInt =params["pagecount"] // *i always get null here*
callMyList(pagecount) //calls my service method to get next set of list for next page
Код GSP (не актуальный)
<%= params.get("pagecount") %>
<%= nxtPage = pagecount++ %>
...
<%params["myId"] = nxtPage%>
<g:remoteLink action="list" id="${nxtPage}">More</g:remoteLink>
Решение
Объект params полезен только для получающий значения из строки запроса текущего запроса. Параметр значение в параметрах в GSP ничего не сделает.Params — это объект области запроса, с каждым новым запросом это совершенно новый объект.Чтобы передать значение из вашего GSP в контроллер списка, это значение должно быть в строке запроса нового запроса к контроллеру.В вашем случае, похоже, вы хотите поместить это в ссылку «Еще».В соответствии с тем, как написан ваш тег RemoteLink, значение nxtPage должно быть в params.id в вашем контроллере списка, чтобы вы могли получить к нему доступ таким образом.Если вы хотите находиться в params.pagecount, вам придется поместить его в атрибут params тега RemoteLink.Что-то вроде этого:
<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink>
Другие советы
def urlString = request.scheme + "://" + request.serverName + ":"
+ request.serverPort + "/" + grailsApplication.metadata.'app.name'
+ "/" + controllerName + "/"