为什么grails中没有用于过滤器的环绕拦截器

为什么grails中没有用于过滤器的环绕拦截器,grails,Grails,grails中似乎没有用于过滤器的环绕拦截器。我们在Spring中也有类似的拦截器。如果我们想按照grails格式实现它,最好的方法是什么。您可以稍微模仿一下。在结束之前的中,您可以检查请求、会话等,并确定是否继续常规呼叫。如果需要,可以重定向或在筛选器中呈现响应,并返回false,以指示不应调用控制器 如果要允许控制器继续,则可以在关闭后在中执行工作。您可以在关闭之前将信息存储在请求范围中的(例如request.currentRequestNumber=counter.incrementAnd

grails中似乎没有用于过滤器的环绕拦截器。我们在Spring中也有类似的拦截器。如果我们想按照grails格式实现它,最好的方法是什么。

您可以稍微模仿一下。在结束之前的
中,您可以检查请求、会话等,并确定是否继续常规呼叫。如果需要,可以重定向或在筛选器中呈现响应,并返回
false
,以指示不应调用控制器

如果要允许控制器继续,则可以在
关闭后在
中执行工作。您可以在
关闭之前将信息存储在请求范围中的
(例如
request.currentRequestNumber=counter.incrementAndGet()
),并在
关闭之后的
中检索信息(例如
int currentRequestNumber=request.currentRequestNumber
)利用属性访问来存储和检索请求属性

但是,您不能“调用”控制器并检查其结果,并选择是否发送该响应、修改该响应或发送其他响应。不过,您可能可以使用响应包装器来实现这一点,其中您有一个捕获呈现响应的自定义编写器

请注意,常规servlet过滤器具有更大的灵活性(但Grails/Groovy帮助较少),即实现
javax.servlet.filter
并在web.xml中注册的类