2011-08-08 8 views
5

Tytuł może wprowadzać w błąd. To, czego naprawdę chcę, to znać nazwę zamknięcia w kontrolerze. Ale zamknięcia w Groovy są zawsze anonimowe, więc nie ma nazwy samego zamknięcia. Ale zamknięcie jest przypisane do zmiennej i zastanawiam się, czy mogę uzyskać nazwę tej zmiennej. Być może pomoże ci przykład. W kontrolerze Grails wyobrazić mam następujące:W Groovy, czy istnieje sposób na poznanie nazwy zmiennej z zamknięciem?

def get_data = { 
     Map results = [ 'errorCode' = -1, 'method' : 'get_data' ] 
     ... 
     render results as JSON 
    } 

na mapie nazywa wyników jest element o nazwie „metoda”, że chcę, aby przypisać do nazwy tego zamknięcia (lub zmienna trzyma zamknięcie się być bardziej precyzyjny). czy to możliwe? Chodzi o to, że chcę uogólnić mapę wyników i chcę automatycznie wypełnić element zwany "metodą". Instynktownie wydaje się, że to powinno być możliwe, ale nie znalazłem podobnych przypadków użycia, które ilustrują sposób. Każda pomoc doceniona.

Odpowiedz

9

Nie sądzę, że można uzyskać nazwę zmiennej w ogólnym przypadku. Jest to tylko odniesienie, a zamknięcie można przypisać do wielu z nich.

To jest bardzo proste, jednak, aby uzyskać nazwę bieżącego działania w kodzie kontrolera:

def get_data = {  
    def results = ['method': actionName] 
} 

Zobacz documentation.

Powiązane problemy