我尝试在转到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'
,我看到过滤器中的打印被调用
答案 0 :(得分:0)
只需添加
即可调用这些内容您好()
这是否意味着您从另一个方法调用hello()方法?确保为了测试过滤器,您需要直接点击URL / userProfile / home
答案 1 :(得分:0)
您遇到的问题是您直接从控制器中的其他操作调用hello()
操作。这只是一个普通的方法调用,不会通过过滤器。
当HTTP客户端请求特定URI时调用Grails过滤器,例如http://localhost:8080/my-app/myController/myAction
将与myController
和myAction
匹配。
如果您只是在响应不同的URI时从控制器内调用myAction()
,则不会使用过滤器。这就是你在做什么。