В основном у меня есть 2 вопроса относительно фильтров чаш Грааля.
if (userId != paramsUserId) { flash.message = "You can only modify yourself" redirect(action: 'list') return false }
Если вышеупомянутое условие верно затем, как оператор возврата будет выполняться?
1 - Возвращение false из фильтра предотвращает выполнение дальнейших фильтров (и действия, если оно находится в фильтре до). Браузер получит перенаправление 302 и перейдет к методу «списка», на который вы просили перенаправить.
http://grails.org/doc/2.3.7/guide/single.html#filterTypes
2 - да. перенаправление на что-то другое, что перенаправляет, нормально. Для браузера это действительно не имеет значения. Если вы посмотрите это в firebug, вы увидите, что такое перенаправление на самом деле. Когда вы перенаправляете, браузер получает ответ с кодом состояния HTTP 302 («Найдено»), этот ответ также включает URL-адрес, который браузер должен запросить следующим (то, на что вы перенаправляете, т. Е. URL-адрес для «списка» метод в примере выше). Затем браузер запрашивает этот URL-адрес, и он ведет себя так, как если бы это был первый запрос.
Вот почему флэш-область так полезна, вещи во флэш-области живут до следующего запроса, поэтому они охватывают перенаправления.