{"id":8061,"date":"2012-09-24T12:11:11","date_gmt":"2012-09-24T06:41:11","guid":{"rendered":"https:\/\/2thenew.today\/blog\/?p=8061"},"modified":"2016-12-19T14:50:27","modified_gmt":"2016-12-19T09:20:27","slug":"grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name","status":"publish","type":"post","link":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/","title":{"rendered":"Grails 2.2.0 : Namespacing to resolve between controllers of same name"},"content":{"rendered":"<p>Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application.<\/p>\n<p>I created a sample app and installed the grails console plugin. This brought a ConsoleController to the application.<\/p>\n<p>[java]<br \/>\ngrails install-plugin console<br \/>\n[\/java]<\/p>\n<p>Next, I added a controller with the same name, ConsoleController.groovy in the application.<\/p>\n<p>[java]<br \/>\ngrails create-controller console<br \/>\n[\/java]<\/p>\n<p>To resolve the two at a mappings level, we need to add an entry in UrlMappings.groovy so that the two URLs are different.<\/p>\n<p>[java]<br \/>\n\/\/UrlMappings.groovy<br \/>\nclass UrlMappings {<\/p>\n<p>        static mappings = {<br \/>\n                &amp;quot;\/gconsole&amp;quot;{ \/\/Resolve gconsole to ConsoleController in the plugin<br \/>\n                        controller = &amp;quot;console&amp;quot;<br \/>\n                        plugin = &amp;quot;console&amp;quot;<br \/>\n                }<br \/>\n                &amp;quot;\/$controller\/$action?\/$id?&amp;quot;{<br \/>\n                        constraints {<br \/>\n                                \/\/ apply constraints here<br \/>\n                        }<br \/>\n                }<\/p>\n<p>                &amp;quot;\/&amp;quot;(view:&amp;quot;\/index&amp;quot;)<br \/>\n                &amp;quot;500&amp;quot;(view:&#8217;\/error&#8217;)<br \/>\n        }<br \/>\n}<\/p>\n<p>[\/java]<\/p>\n<p>Now, if I want to hit the console controller from the application, I can navigate to: <strong><em>http:\/\/&lt;app_base_url&gt;\/console<\/em><\/strong><\/p>\n<p>And to navigate to console controller from the plugin, I can navigate to:<strong> <em>http:\/\/<\/em><em>&lt;app_base_url&gt;<\/em><em>\/gconsole<\/em><\/strong><\/p>\n<p>To use this in the <em><strong>&lt;g:link&gt;<\/strong><\/em> tag, all we need to do is provide an extra attribute <em><strong>plugin<\/strong><\/em> and grails will create the URL accordingly.<\/p>\n<p>This means that we can have choose better namings for our controllers without losing control(pun unintended) over their names.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":2,"footnotes":""},"categories":[7],"tags":[1031,1032,1030],"class_list":["post-8061","post","type-post","status-publish","format-standard","hentry","category-grails","tag-grails-2-2-0","tag-grails-controller-namespacing","tag-grails-features"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Vivek Krishna\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#article\",\"name\":\"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog\",\"headline\":\"Grails 2.2.0 : Namespacing to resolve between controllers of same name\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vivek\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2012-09-24T12:11:11+05:30\",\"dateModified\":\"2016-12-19T14:50:27+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#webpage\"},\"articleSection\":\"Grails, grails 2.2.0, grails controller namespacing, Grails features\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"name\":\"Grails\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"position\":2,\"name\":\"Grails\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#listItem\",\"name\":\"Grails 2.2.0 : Namespacing to resolve between controllers of same name\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#listItem\",\"position\":3,\"name\":\"Grails 2.2.0 : Namespacing to resolve between controllers of same name\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"name\":\"Grails\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vivek\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vivek\\\/\",\"name\":\"Vivek Krishna\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/07dba643a97b00215bacf46343f18d6cb7ab45f777264e13c22deb54f2cc830b?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Vivek Krishna\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/\",\"name\":\"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog\",\"description\":\"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vivek\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/vivek\\\/#author\"},\"datePublished\":\"2012-09-24T12:11:11+05:30\",\"dateModified\":\"2016-12-19T14:50:27+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog","description":"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app","canonical_url":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#article","name":"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog","headline":"Grails 2.2.0 : Namespacing to resolve between controllers of same name","author":{"@id":"https:\/\/2thenew.today\/blog\/author\/vivek\/#author"},"publisher":{"@id":"https:\/\/2thenew.today\/blog\/#organization"},"datePublished":"2012-09-24T12:11:11+05:30","dateModified":"2016-12-19T14:50:27+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#webpage"},"articleSection":"Grails, grails 2.2.0, grails controller namespacing, Grails features"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog#listItem","position":1,"name":"Home","item":"https:\/\/2thenew.today\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/category\/grails\/#listItem","name":"Grails"}},{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/category\/grails\/#listItem","position":2,"name":"Grails","item":"https:\/\/2thenew.today\/blog\/category\/grails\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#listItem","name":"Grails 2.2.0 : Namespacing to resolve between controllers of same name"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#listItem","position":3,"name":"Grails 2.2.0 : Namespacing to resolve between controllers of same name","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.today\/blog\/category\/grails\/#listItem","name":"Grails"}}]},{"@type":"Organization","@id":"https:\/\/2thenew.today\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/2thenew.today\/blog\/"},{"@type":"Person","@id":"https:\/\/2thenew.today\/blog\/author\/vivek\/#author","url":"https:\/\/2thenew.today\/blog\/author\/vivek\/","name":"Vivek Krishna","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/07dba643a97b00215bacf46343f18d6cb7ab45f777264e13c22deb54f2cc830b?s=96&d=mm&r=g","width":96,"height":96,"caption":"Vivek Krishna"}},{"@type":"WebPage","@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#webpage","url":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/","name":"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog","description":"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.today\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.today\/blog\/author\/vivek\/#author"},"creator":{"@id":"https:\/\/2thenew.today\/blog\/author\/vivek\/#author"},"datePublished":"2012-09-24T12:11:11+05:30","dateModified":"2016-12-19T14:50:27+05:30"},{"@type":"WebSite","@id":"https:\/\/2thenew.today\/blog\/#website","url":"https:\/\/2thenew.today\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/2thenew.today\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog","og:description":"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app","og:url":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/","og:image":"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Grails 2.2.0 : Namespacing to resolve between controllers of same name | TO THE NEW Blog","twitter:description":"Grails 2.2.0.RC1 was released last week and a new feature to make an entry into the version of the framework is the support for namespaces for controllers and services so that there is no naming conflicts while adding artefacts of the same name from different plugins or within the application. I created a sample app","twitter:image":"https:\/\/2thenew.today\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"8061","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-30 08:09:01","updated":"2024-02-29 10:54:24","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.today\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.today\/blog\/category\/grails\/\" title=\"Grails\">Grails<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tGrails 2.2.0 : Namespacing to resolve between controllers of same name\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.today\/blog"},{"label":"Grails","link":"https:\/\/2thenew.today\/blog\/category\/grails\/"},{"label":"Grails 2.2.0 : Namespacing to resolve between controllers of same name","link":"https:\/\/2thenew.today\/blog\/grails-2-2-0-namespacing-to-resolve-between-controllers-of-same-name\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/posts\/8061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/comments?post=8061"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/posts\/8061\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/media?parent=8061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/categories?post=8061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.today\/blog\/wp-json\/wp\/v2\/tags?post=8061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}