Отображение имен контроллеров в URL (с пакетами) - PullRequest
1 голос
/ 13 сентября 2010

Можно ли настроить grails для разрешения контроллеров и действий, используя пакет, в котором они находятся как подпапки?

Например, скажем, у меня есть следующая структура каталогов:

/grails-app/controllers/HomeController.groovy (with action index)
/grails-app/controllers/security/UserController.groovy (with actions index, edit)
/grails-app/controllers/security/RoleController.groovy (with action index, edit)

Я бы хотел, чтобы grails автоматически генерировал следующие отображения URL:

http://localhost:8080/myApp/ => HomeController.index
http://localhost:8080/myApp/security/user/ => UserController.index
http://localhost:8080/myApp/security/user/edit => UserController.edit
http://localhost:8080/myApp/security/role/ => RoleController.index
http://localhost:8080/myApp/security/role/edit => RoleController.edit

Ответы [ 2 ]

3 голосов
/ 13 сентября 2010

Я бы немного опасался сопоставлять их напрямую с именами ваших пакетов. В этом случае вам будет очень трудно проводить рефакторинг в будущем, особенно после того, как ваше приложение выйдет в дикую природу. Это также идет вразрез с обычной природой Грааля.

Однако вы все равно можете вручную структурировать свои URL-адреса для сопоставления с другими путями. Для вашего вопроса, вот пример:

// grails-app/conf/UrlMappings.groovy

'/security/user/$action?/$id?' (controller: 'user')
'/security/role/$action?/$id?' (controller: 'role')

// the rest of the default UrlMappings are below
'/$controller/$action?/$id?' {}

Поскольку на контроллеры обычно ссылаются по имени, например, «пользователь» в вашем случае не легко пойти против этого соглашения; он будет пытаться бороться с фреймворком вместо того, чтобы позволить ему делать всю работу за вас.

Возможно возможно сделать это на основе пакета (возможно, с помощью Reflection или чего-то еще?), Но не рекомендуется.

1 голос
/ 13 сентября 2010

Я полагаю, вы ищете ограничение Grails URLMapping.Смотрите здесь: Grails - сопоставление URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...