Доступ к ответу из RequestContextHolder - PullRequest
0 голосов
/ 09 октября 2011

Есть ли способ получить доступ к текущему ответу внутри Сервиса?Мне нужно это, чтобы удалить просроченный cookie-файл Facebook ...

Я знаю, как получить доступ к текущему запросу:

RequestContextHolder.currentRequestAttributes().getRequest()

Нет недостатка в ответе.

Ответы [ 2 ]

1 голос
/ 09 октября 2011

Служба не должна знать о http, поскольку это просто класс Groovy (или иногда Java), который имеет служебные методы.Но поскольку вы, скорее всего, вызываете его из контроллера, у которого есть доступ, вы можете извлечь информацию из запроса на веб-уровне и передать ее на сервисный уровень для обработки.

0 голосов
/ 14 января 2015

Я согласен с @Burt в целом, но есть ситуации, подобные @julkiewicz, упомянутые в комментарии выше, где вам нужно получить доступ к cookie, и не хочу передавать всю информацию (особенно, если cookie не необходимо на многих промежуточных слоях). Два варианта, которые я нашел, приведены ниже (первый - более чистый, но я не знаю, предпочтительнее ли WebUtils, чем RequestContextHolder, или, возможно, наоборот.

WebUtils.retrieveGrailsWebRequest().request.cookies

и

RequestContextHolder.requestAttributes.request.request.request.cookies

Я не знаю, почему так много вложенных request объектов, но я убедился, что это работает для меня, в Grails 2.4.2.

...