在Java中,我们可以在过滤器中执行:
chain.doFilter(request, response);
这意味着我们可以使用自己的RequestWrappers
并执行:
chain.doFilter(new RequestWrapper(request), response);
与grails中的chain.doFilter
相同的是什么?我想创建我的RequestWrapper
,然后调用doFilter
以便下一个过滤器获取它?
答案 0 :(得分:3)
Grails过滤器(如here所述)未实现为servlet过滤器。我不认为grails过滤器提供了一种包装请求的方法。
您可以通过利用groovy的动态特性来达到同样的效果。例如,您可以修改请求对象的metaClass,以将某些方法委托给另一个对象。
另一种方法是使用常规servlet过滤器:
javax.servlet.Filter
或src/groovy
中创建一个扩展src/java
的类。 grails install-templates
(如果您还没有)。src/templates/war/web.xml
以完全包含<filter>
和<filter-mapping>
元素,就像使用纯Java Web应用程序一样。