Как мне перебрать request.getParamterNames ()? - PullRequest
0 голосов
/ 22 марта 2011

Я использую Grails 1.2.1.Как в методе Grails, который ссылается на объект HttpServletRequest, как выполнить итерацию по перечислению request.getParameterNames ()?Это не работает ...

    protected void doCacheTransport(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {               
            def url = request.getParameter("url")
            request.getParameterNames().each { 
                def paramName = it
                if (paramName != "url") { 
                    remoteUrl << "&" << paramName << "=" << request.getParameter(paramName)
                }   // if
            }   // each

Я включил строку 'def url = request.getParameter ("url") в мой отладчик, чтобы доказать себе, что параметр "url" действительно определен,Тем не менее, цикл пропускает все.

Спасибо за любую дополнительную информацию.- Дэйв

1 Ответ

0 голосов
/ 22 марта 2011

Я не совсем уверен, почему ваш код не работает, так как он выглядит нормально (при условии, что remoteUrl объявлен вне каждого замыкания. В любом случае, это можно немного упростить. Во-первых, используя getParameterMap () метод ServletRequest и второй, с использованием неясного, но очень мощного метода инъекции из API коллекций Groovy.

Inject принимает начальное значение (которое я предполагаю, что вы установили remoteUrl в свой реальный код), а затем перебирает коллекцию, передавая накопленное значение (или начальное значение при первом проходе) и элемент , Это очень удобно для вычисления значения, результат которого каким-то образом извлекается из каждого элемента в коллекции.

Тем не менее, я думаю, вы можете сделать что-то вроде этого, чтобы получить желаемый результат:

protected void doCacheTransport(HttpServletRequest request, HttpServletResponse response) {
    def remoteUrl = request.parameterMap.entrySet().inject('http://someurl.example.com/?key=1828372') { url, entry ->
        if (entry.key == "url") return url
        else url << "&${entry.key}=${entry.value}"
    }
    // ...

}

Если вы можете предоставить более подробную информацию о том, что именно вы делаете, я могу привести более полезный пример.

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