我正在将旧的Java过滤器转换为Grails过滤器.(过滤器正在记录对特定静态图像的访问.)
问题是,我无法得到它!Grails是否支持静态资源前的过滤器?
class EmailImageFilters {
def filters = {
emailFilter(uri: '/images/**') {
log.info "email filter ${new Date()}"
before = {
return true;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用UIPerformance插件,但它在开发模式下没有打开.
Grails 1.3.5
我可以在以下情况下解雇:
emailFilter(controller: '*', action: '*') {
Run Code Online (Sandbox Code Playgroud)
但我需要通过静态资源; 例如/图像
建议?
Bur*_*ith 10
静态资源不是由控制器提供的,因此Grails过滤器(它是Spring控制器拦截器的包装器)不会为它们的请求触发.您需要在web.xml中注册servlet过滤器以处理静态资源.
在src/java或src/groovy中创建一个实现的类javax.servlet.Filter,然后运行grails install-templates并编辑src/templates/war/web.xml以注册它,类似于
<filter>
<filter-name>myFilter</filter-name>
<filter-class>com.mycompany.myapp.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
如果您不希望为所有请求触发,请将url-pattern的值更改为更具体.
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |