{"id":20492,"date":"2015-06-03T15:43:57","date_gmt":"2015-06-03T10:13:57","guid":{"rendered":"https:\/\/tothenewco.pro\/blog\/?p=20492"},"modified":"2015-06-26T10:34:22","modified_gmt":"2015-06-26T05:04:22","slug":"traits-provided-by-grails-3","status":"publish","type":"post","link":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/","title":{"rendered":"Traits Provided by Grails 3"},"content":{"rendered":"<p>The Core API&#8217;s in Grails 3 <a href=\"https:\/\/tothenewco.pro\/grails-application-development\">are based on Groovy<\/a> Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes.<\/p>\n<p><strong>ResponseRenderer<\/strong><\/p>\n<p>With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way :<\/p>\n<p>[java]<br \/>\nimport grails.artefact.controller.support.ResponseRenderer<br \/>\nclass ResponseRendererComponent implements ResponseRenderer {<br \/>\n    ResponseRendererComponent() {<br \/>\n        render &quot;rendering from the constructor&quot;<br \/>\n    }<br \/>\n}<br \/>\n[\/java]<\/p>\n<p>Now when we try to instantiate ResponseRendererComponent, the render() inside the the constructor (which is provided by ReponseRenderer trait) will render the response.<\/p>\n<p><strong>WebAttributes<\/strong><\/p>\n<p>[java]<br \/>\nimport grails.artefact.controller.support.ResponseRenderer<br \/>\nimport grails.web.api.WebAttributes<br \/>\nclass WebAttributesComponent implements WebAttributes, ResponseRenderer {<br \/>\n    WebAttributesComponent() {<br \/>\n        render &quot;base url: ${webRequest.baseUrl}&quot;<br \/>\n        render &quot;&lt;br&gt;&quot;<br \/>\n        render &quot;params: ${params}&quot;<br \/>\n        render &quot;&lt;br&gt;&quot;<br \/>\n        render grailsApplication.config.getProperty(&quot;myVar&quot;)<br \/>\n    }<br \/>\n}<br \/>\n[\/java]<\/p>\n<p>In the above example we are accessing params, webRequest and properties which are defined in application.yml<\/p>\n<p><strong>ServletAttributes<\/strong><\/p>\n<p>With the help of SevletAttributes trait we can access the sessions inside any Groovy class.<\/p>\n<p>[java]<br \/>\nimport grails.artefact.controller.support.ResponseRenderer<br \/>\nimport grails.web.api.ServletAttributes<br \/>\nclass ServletAttributeComponent implements ServletAttributes, ResponseRenderer {<br \/>\n    ServletAttributeComponent() {<br \/>\n        render session.mySession<br \/>\n    }<br \/>\n}<br \/>\n[\/java]<\/p>\n<p>We can also redirect and forward to an action of the controller from any Groovy class using ResponseRedirector and RequestForwarder traits.<\/p>\n<p><strong>ResponseRedirector<\/strong><\/p>\n<p>[java]<br \/>\nimport grails.artefact.controller.support.ResponseRedirector<br \/>\nclass ResponseRedirectorComponent implements ResponseRedirector {<br \/>\n    ResponseRedirectorComponent() {<br \/>\n        redirect(controller: &quot;responseRedirector&quot;, action: &quot;redirected&quot;)<br \/>\n    }<br \/>\n}<\/p>\n<p>[\/java]<\/p>\n<p><strong>RequestForwarder<\/strong><\/p>\n<p>[java]<br \/>\nimport grails.artefact.controller.support.RequestForwarder<br \/>\nclass RequestForwarderComponent implements RequestForwarder {<br \/>\n    RequestForwarderComponent() {<br \/>\n        forward(controller:&quot;requestForwarder&quot;,action:&quot;forwarded&quot;)<br \/>\n    }<br \/>\n}<br \/>\n[\/java]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Core API&#8217;s in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class [&hellip;]<\/p>\n","protected":false},"author":102,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":11,"footnotes":""},"categories":[7],"tags":[],"class_list":["post-20492","post","type-post","status-publish","format-standard","hentry","category-grails"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"The Core API&#039;s in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"pulkit\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/\" \/>\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=\"Traits Provided by Grails 3 | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"The Core API&#039;s in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/tothenewco.pro\/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=\"Traits Provided by Grails 3 | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"The Core API&#039;s in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/tothenewco.pro\/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\\\/traits-provided-by-grails-3\\\/#article\",\"name\":\"Traits Provided by Grails 3 | TO THE NEW Blog\",\"headline\":\"Traits Provided by Grails 3\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/pulkit\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2015-06-03T15:43:57+05:30\",\"dateModified\":\"2015-06-26T10:34:22+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#webpage\"},\"articleSection\":\"Grails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#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\\\/traits-provided-by-grails-3\\\/#listItem\",\"name\":\"Traits Provided by Grails 3\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#listItem\",\"position\":3,\"name\":\"Traits Provided by Grails 3\",\"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\\\/pulkit\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/pulkit\\\/\",\"name\":\"pulkit\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/441327442433dae6b5fce236d129ee04805f926509847c6f1029c4db31e634ae?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"pulkit\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/\",\"name\":\"Traits Provided by Grails 3 | TO THE NEW Blog\",\"description\":\"The Core API's in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/traits-provided-by-grails-3\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/pulkit\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/pulkit\\\/#author\"},\"datePublished\":\"2015-06-03T15:43:57+05:30\",\"dateModified\":\"2015-06-26T10:34:22+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":"Traits Provided by Grails 3 | TO THE NEW Blog","description":"The Core API's in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class","canonical_url":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#article","name":"Traits Provided by Grails 3 | TO THE NEW Blog","headline":"Traits Provided by Grails 3","author":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/pulkit\/#author"},"publisher":{"@id":"https:\/\/tothenewco.pro\/blog\/#organization"},"datePublished":"2015-06-03T15:43:57+05:30","dateModified":"2015-06-26T10:34:22+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#webpage"},"isPartOf":{"@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#webpage"},"articleSection":"Grails"},{"@type":"BreadcrumbList","@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/tothenewco.pro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/grails\/#listItem","name":"Grails"}},{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/grails\/#listItem","position":2,"name":"Grails","item":"https:\/\/tothenewco.pro\/blog\/category\/grails\/","nextItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#listItem","name":"Traits Provided by Grails 3"},"previousItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#listItem","position":3,"name":"Traits Provided by Grails 3","previousItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/grails\/#listItem","name":"Grails"}}]},{"@type":"Organization","@id":"https:\/\/tothenewco.pro\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/tothenewco.pro\/blog\/"},{"@type":"Person","@id":"https:\/\/tothenewco.pro\/blog\/author\/pulkit\/#author","url":"https:\/\/tothenewco.pro\/blog\/author\/pulkit\/","name":"pulkit","image":{"@type":"ImageObject","@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/441327442433dae6b5fce236d129ee04805f926509847c6f1029c4db31e634ae?s=96&d=mm&r=g","width":96,"height":96,"caption":"pulkit"}},{"@type":"WebPage","@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#webpage","url":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/","name":"Traits Provided by Grails 3 | TO THE NEW Blog","description":"The Core API's in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/tothenewco.pro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/#breadcrumblist"},"author":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/pulkit\/#author"},"creator":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/pulkit\/#author"},"datePublished":"2015-06-03T15:43:57+05:30","dateModified":"2015-06-26T10:34:22+05:30"},{"@type":"WebSite","@id":"https:\/\/tothenewco.pro\/blog\/#website","url":"https:\/\/tothenewco.pro\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/tothenewco.pro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Traits Provided by Grails 3 | TO THE NEW Blog","og:description":"The Core API's in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class","og:url":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/","og:image":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Traits Provided by Grails 3 | TO THE NEW Blog","twitter:description":"The Core API's in Grails 3 are based on Groovy Traits. Following are the few of the examples which shows the way you can use these traits in Groovy classes. ResponseRenderer With the help of ResponseRenderer traits we can provide render method to a Groovy class in the following way : [java] import grails.artefact.controller.support.ResponseRenderer class","twitter:image":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"20492","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 07:21:12","updated":"2024-02-29 10:30:05","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:\/\/tothenewco.pro\/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:\/\/tothenewco.pro\/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\tTraits Provided by Grails 3\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/tothenewco.pro\/blog"},{"label":"Grails","link":"https:\/\/tothenewco.pro\/blog\/category\/grails\/"},{"label":"Traits Provided by Grails 3","link":"https:\/\/tothenewco.pro\/blog\/traits-provided-by-grails-3\/"}],"_links":{"self":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/20492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/comments?post=20492"}],"version-history":[{"count":0,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/20492\/revisions"}],"wp:attachment":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/media?parent=20492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/categories?post=20492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/tags?post=20492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}