相当于Grails中的chain.doFilter

时间:2013-09-26 15:03:14

标签: java grails servlet-filters

在Java中,我们可以在过滤器中执行:

chain.doFilter(request, response);

这意味着我们可以使用自己的RequestWrappers并执行:

chain.doFilter(new RequestWrapper(request), response);

与grails中的chain.doFilter相同的是什么?我想创建我的RequestWrapper,然后调用doFilter以便下一个过滤器获取它?

1 个答案:

答案 0 :(得分:3)

Grails过滤器(如here所述)未实现为servlet过滤器。我不认为grails过滤器提供了一种包装请求的方法。

您可以通过利用groovy的动态特性来达到同样的效果。例如,您可以修改请求对象的metaClass,以将某些方法委托给另一个对象。

另一种方法是使用常规servlet过滤器:

  1. javax.servlet.Filtersrc/groovy中创建一个扩展src/java的类。
  2. 运行grails install-templates(如果您还没有)。
  3. 更新src/templates/war/web.xml以完全包含<filter><filter-mapping>元素,就像使用纯Java Web应用程序一样。