嗨,我正在使用Grails 过滤器插件
我正在尝试定义一个默认过滤器,如下所示
// Defined inside the Book entity
static hibernateFilters = {
activeFilter(condition:'active=1', default:true)
}
当我运行集成测试时,过滤器不适用于动态查找器方法,例如
Book.findAll()
如果我在 BootStrap.groovy 类中添加以下行
Book.enableHibernateFilter('activeFilter')
然后应用过滤器。
但是,当应用程序运行时,无论是否在 BootStrap.groovy 中使用上述代码,都不会应用过滤器
有任何想法吗 ?
经过一番挖掘,这就是我发现的
hibernate 过滤器插件在没有 zkgrails 插件的情况下工作得很好,但是两者似乎不能一起工作:(
下面的代码片段对我来说似乎是个问题。
我认为我们在这里可能有两个问题
1)最初执行到达
所有(控制器:' ',动作:' ')
在应用程序启动期间只有一次。我认为每次有新请求并因此有新会话时它都应该到达那里。
2)即使经过某种修改后它以某种方式到达那里,我认为它不会过去所有(控制器:' ',动作:' ')
zkoss 中使用了作曲家
class HibernateFilterFilters {
def filters = {
all(controller:'*', action:'*') {
before = {
def session = grailsApplication.mainContext.sessionFactory.currentSession
DefaultHibernateFiltersHolder.defaultFilters.each {name ->
session.enableFilter(name)
}
}
after = {
}
afterView = {
}
}
}
}