В вашем случае я бы проделал тяжелую работу в контроллере, поскольку это влияет только на один класс.
Однако есть другой способ - использовать пользовательский GroovyPageResourceLoader.
Этот подход обычно используется, когда ваши представления находятся в структуре папок, которая не соответствует соглашениям Grails. В вашем случае, на мой взгляд, это было бы излишним.
Однако вот общая идея:
1. Создайте класс, расширяющий GroovyPageResourceLoader по умолчанию.
Ниже приведен очень сырой пример.
class AdminGroovyPageResourceLoader extends GroovyPageResourceLoader {
@Override Resource getResource(java.lang.String location) {
if (location.contains ("/admin")) {
return new FileSystemResource("PATH_TO_GSP_LOCATION_WITHOUT_FILE_EXTENSION")
}
return super.getResource(location)
}
}
2. Переопределить bean-компонент groovyPageResourceLoader по умолчанию
В resources.groovy или дескрипторе вашего подключаемого модуля переопределите bean-компонент groovyPageResourceLoader своим пользовательским классом.
Более короткий путь, может быть какой-нибудь метакласс кунг-фу, если вы не не хочу отменять Spring Bean по умолчанию.
person
rimero
schedule
29.05.2013