2015-10-23 3 views
0

Я пытаюсь определить переменную, содержащую имя действия и имя контроллера. Эта переменная будет использоваться при регистрации.Grails определяет глобальную переменную для действия и имя контроллера

Вот мой контроллер:

class SomeController { 
def TAG = "${controllerName}/${actionName}" 
// rest of code 
} 

Приведенный выше код не будет работать, как ActionName не известно, когда GSTRING оценивается.

Так что я должен делать в данный момент, является то, что в каждом действии контроллера, я должен поставить это на месте:

class SomeController { 

// .....  

def someAction() { 
    def TAG = "${controllerName}/${actionName}" 
    // rest of code 
    log.debug("${TAG}: logging message") 
} 
} 

Так что я в основном хочу, чтобы избежать необходимости определить TAG в каждое действие. Есть ли способ просто определить его как глобальную переменную (или иначе), чтобы я мог вызвать ее в каждом действии для ведения журнала, как в приведенном выше коде?

ответ

0

Хорошо, наконец, я понял. Я использовал lazy evaluation объявить TAG как закрытие:

class SomeController { 
def TAG = "${-> controllerName}/${-> actionName}" 
// rest of code 
} 

Надеется, что это помогает кто-то другое тоже !!

Смежные вопросы