从RequestContextHolder访问响应

时间:2011-10-09 12:05:17

标签: grails httpresponse

有没有办法访问服务中的当前响应?我需要这个来删除过期的Facebook cookie ...

我知道如何访问当前请求:

RequestContextHolder.currentRequestAttributes().getRequest()

虽然不缺回应。

2 个答案:

答案 0 :(得分:1)

服务不应该知道http,因为它只是一个具有实用程序方法的Groovy(或有时是Java)类。但由于您最有可能从具有访问权限的控制器调用它,您可以从Web层中的请求中提取信息并将其传递给服务层进行处理。

答案 1 :(得分:0)

我总体上同意@Burt,但是在上面的评论中提到了像@julkiewicz这样的情况,你必须访问cookie,并且不想传递所有信息(特别是如果cookie在许多中间层不需要)。我发现的两个选项如下(第一个更干净,但我不知道WebUtils是否优先于RequestContextHolder,或者可能反过来。

WebUtils.retrieveGrailsWebRequest().request.cookies

RequestContextHolder.requestAttributes.request.request.request.cookies

我不知道为什么有这么多嵌套的request对象,但我在Grails 2.4.2中验证了这个对我有用。