переменные запроса в граалях - PullRequest
1 голос
/ 12 июня 2009

РЕДАКТИРОВАТЬ : на основе обратной связи, полностью стерли оригинал Q. и перепечатали на лучшем языке

Я хочу получить доступ к переменной request или params и передать ее между контроллером и 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>

Ответы [ 2 ]

2 голосов
/ 12 июня 2009

Объект params полезен только для получения значений из строки запроса текущего запроса. Установка значение в GSP в параметрах ничего не изменит. Params - это объект области запроса, при каждом новом запросе это совершенно новый объект. Чтобы передать значение из вашего GSP в контроллер списка, это значение должно быть в строке запроса нового запроса к контроллеру. В вашем случае, похоже, что вы хотите добавить его в ссылку «Подробнее». При написании вашего тега remoteLink значение nxtPage должно быть в params.id вашего контроллера List, чтобы вы могли получить к нему доступ таким образом. Если вы хотите быть в params.pagecount, вам нужно поместить его в атрибут params вашего тега remoteLink. Как то так:

<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink>
1 голос
/ 28 октября 2011
def urlString =  request.scheme + "://" + request.serverName + ":" 
+ request.serverPort + "/" + grailsApplication.metadata.'app.name' 
+ "/" + controllerName + "/" 
...