Я не совсем уверен, почему ваш код не работает, так как он выглядит нормально (при условии, что 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}"
}
// ...
}
Если вы можете предоставить более подробную информацию о том, что именно вы делаете, я могу привести более полезный пример.