没有为自定义操作调用Grails过滤器

时间:2015-05-18 14:30:53

标签: grails filter grails-filters

我尝试在转到GSP页面之前尝试实现应在某些实例中调用的过滤器。由于URL在我希望它发生的实例和我不想要的实例之间没有太大差异,我认为最好的方法是创建一个什么都不做的方法(使用print语句)在内部) - 但是当我想要进行过滤操作时可以简单地调用它。

我试过这两个:

def hello(){
    print "hello"       
}

def hello = {
    print "hello"
}

只需添加

即可调用这些内容
hello()

在相关点

我的过滤器的开头如下:

import uui.FormattingService

class TimeFormatterFilters {

    def FormattingService formattingService

    def filters = {
        someFilter(controller: 'userProfile', action: 'hello') {
            before = {
                print "filter action taking place"

我没有在过滤器中看到UserProfileController中新创建的方法中的print语句,但是如果我将过滤器的操作交换到'index',我看到过滤器中的打印被调用

2 个答案:

答案 0 :(得分:0)

你说这个:

  

只需添加

即可调用这些内容      

您好()

这是否意味着您从另一个方法调用hello()方法?确保为了测试过滤器,您需要直接点击URL / userProfile / home

答案 1 :(得分:0)

您遇到的问题是您直接从控制器中的其他操作调用hello()操作。这只是一个普通的方法调用,不会通过过滤器。

当HTTP客户端请求特定URI时调用Grails过滤器,例如http://localhost:8080/my-app/myController/myAction将与myControllermyAction匹配。

如果您只是在响应不同的URI时从控制器内调用myAction(),则不会使用过滤器。这就是你在做什么。