2016-04-01 21 views
2

Ich benutze Grails 2.3.11 in meinem Projekt.Grails - überprüfen, ob die Anfrage bereits umgeleitet wurde

Ich habe nächste Situation:

Ich habe Controller, die auf Ausnahme umleiten nennen:

class SomeController{ 
    someAction(){ 
     try { 
      doSmth() 
     } catch (exception) { 
      return redirect (action: 'index') //first redirect HERE 
     } 
    } 
} 

I-Filter haben, die auch auf einer anderen Ausnahme umleiten nennen.

class BreadCrumbsFilters { 


def filters = { 

     all(
       controller: '*', 
       action: '*' 
     ) { 
      after = { 
       if (request.xhr) return 

       try { 
        buildBreadCrumbs() 
       } catch (IllegalArgumentException) { 
        redirect(controller: 'login', action: 'auth') //second redirect HERE 
        return false 
       } 
      } 
     } 
    } 
} 

Umleitung kann nicht zweimal aufgerufen werden.

Frage: Wie überprüft man, ob dort Redirect bereits aufgerufen wurde?

Ich fand nächste Lösung: Überprüfen Sie den Antwortstatus.

if(response.status != 3**) redirect(); 

Ist diese Methode korrekt? Danke!

Antwort

2

In 2.3.11 Sie die folgenden nennen:

import org.codehaus.groovy.grails.web.servlet.GrailsApplicationAttributes 

request.getAttribute(GrailsApplicationAttributes.REDIRECT_ISSUED) 

, dass die Umleitung URI zurück, wenn eine Umleitung ausgegeben wurde und wird null zurück, wenn keine Umleitung ausgegeben wurde.

+0

Vielen Dank! Funktioniert gut! –

Verwandte Themen