Настройка фильтра без контроллеров

У меня есть работающий кот в localost.

Я хочу написать фильтр Grails таким образом, чтобы, когда пользователь переходит к localhost/filter/, перехватывать вызов и выполнять некоторую обработку. Я создал фильтр, который находится внутри папки conf

class TestFilters {

    def filters = {
        filter(uri:'/filter') {
            before = {
            }
            after = {                    
            }
            afterView = {                   
            }
        }
    }        
}

после настройки этого, когда я перехожу к localhost/filter/, я получаю только ошибку 404.

Где я делаю ошибку?

заранее спасибо


person sriram    schedule 31.01.2013    source источник


Ответы (1)


Если у вас нет FilterController, URL-адрес localhost/filter не имеет ресурса для отображения, поэтому вы получаете ошибку 404. Вы должны адаптировать свой UrlMappings так, чтобы localhost/filter был действительным URL-адресом приложения.

Добавьте следующее к UrlMappings.groovy:

"/filter" (controller: "yourController", action:"yourAction") 

Теперь URL-адрес localhost/filter указывает на yourAction в yourController, и фильтр должен быть применен.

person aiolos    schedule 31.01.2013
comment
Нет другого способа сделать это без создания контроллера? Есть ли способ сделать это, изменив файл web.xml? - person sriram; 31.01.2013
comment
Если вы действительно хотите игнорировать весь шаблон MVC, вы можете связать сопоставление URL-адресов непосредственно с представлением. Взгляните на этот ответ SO, который я нашел... - person aiolos; 31.01.2013
comment
Спасибо за ответ. Но есть ли способ поместить маршрутизацию фильтра в UrlMapping? - person sriram; 31.01.2013