CFSaveContent And THISTAG.GeneratedContent Tip

Posted February 18, 2008 at 7:27 AM by Ben Nadel

Tags: ColdFusion

Over the weekend, when I was working on my Dig Deep Fitness prototype, I thought of a neat little trick. I am sure that this has been done by many people, but it had never occurred to me. I was working with a ColdFusion custom tag in which I needed to replace the generated content of the tag. Normally, when I would do something of this nature, I would simply store the new content in a CFSaveContent tag buffer and then set that variable into the THISTAG.GeneratedContent variable:

  • <!---
  • We only want to execute this after the tag has
  • executed. That way, we will know all the child
  • tags and content that has been generated.
  • --->
  • <cfif (THISTAG.ExecutionMode EQ "End")>
  •  
  • <!--- Create the new tag content. --->
  • <cfsavecontent variable="VARIABLES.NewContent">
  • <cfoutput>
  •  
  • <!---
  • Put the new content in here that you want the
  • ColdFusion custom custom to actually produce.
  • --->
  •  
  • </cfoutput>
  • </cfsavecontent>
  •  
  •  
  • <!--- Set the tag's new content. --->
  • <cfset THISTAG.GeneratedContent = VARIABLES.NewContent />
  •  
  • </cfif>

But this weekend, as I was writing a tag like that, it hit me! Why not just store the CFSaveContent buffer directly into the GeneratedContent of the tag? Why bother even going through an intermediary variable:

  • <!---
  • We only want to execute this after the tag has
  • executed. That way, we will know all the child
  • tags and content that has been generated.
  • --->
  • <cfif (THISTAG.ExecutionMode EQ "End")>
  •  
  • <!--- Reset the tag content. --->
  • <cfsavecontent variable="THISTAG.GeneratedContent">
  • <cfoutput>
  •  
  • <!---
  • Put any content in here that you want the
  • ColdFusion custom custom to actually
  • produce. By storing the content diretly into
  • the GeneratedContent, it will set the output
  • that is displayed.
  • --->
  •  
  • </cfoutput>
  • </cfsavecontent>
  •  
  • </cfif>

Notice that the CFSaveContent tag is now storing its buffer directly into the THISTAG.GeneratedContent variable, which will, thereby, replace the content of the ColdFusion tag.

So, like I said, this is a really minor tip, but I think it has a big logical and visual impact on the layout of the ColdFusion custom tag. Thought I would share this with anyone who hadn't realized this shortcut yet.



Reader Comments

Feb 19, 2008 at 2:14 AM // reply »
16 Comments

Another good tip Ben, thanks


Feb 26, 2008 at 9:17 PM // reply »
1 Comments

It will come in handy. Go Ben go. :)


Mar 17, 2011 at 2:12 PM // reply »
2 Comments

Apparently, you cannot change THISTAG.GeneratedContent when THISTAG.ExecutionMode EQ "start"


Mar 17, 2011 at 2:26 PM // reply »
10,640 Comments

@Ralph,

Correct - there is no generated content at that point since the body of the tag has not yet executed.


Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
InVision App - Prototyping Made Beautiful With Prototyping Tools Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
Feb 10, 2012 at 7:21 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
Update! Instead of $(eval(options.insertAfter)).after(data['insertData']); I now use: var ajaxNode = document.createElement('span'); var parent = $(eval(options.insertAfter))[0].parentNode; ... read »
Feb 10, 2012 at 6:18 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
encountered this same, what I consider, jQuery bug last week. I'm building a site in which I load some content via AJAX. This content contains Linkedin share button placeholders which Linkedin API ne ... read »
Feb 10, 2012 at 11:30 AM
Cross-Origin Resource Sharing (CORS) AJAX Requests Between jQuery And Node.js
After you understand the concepts here, this is an awesome cheatsheet for enabling CORS in just about anything http://enable-cors.org/ ... read »
JM
Feb 10, 2012 at 9:10 AM
My Safari Browser SQLite Database Hello World Example
@Amy, Here is a very good tutorial on how to use JOIN: http://www.sqltutorial.org/sqljoin-innerjoin.aspx ... read »
Feb 10, 2012 at 4:42 AM
Building A Twitter-Inspired RESTful API Architecture In ColdFusion
This is great, very useful Ben. I spotted a small typo in the api.cgm listing: <cfthrow type="Unauthroized" /> Cheers Stefan ... read »
Feb 9, 2012 at 10:35 PM
CFDirectory Filtering Uses Pipe Character For Multiple Filters (Thanks Steve Withington)
I was wondering if there would be a filter you could apply so that you got everything but what you included in the filter. As in show me all docs that are not a .pdf. ... read »
Feb 9, 2012 at 10:29 PM
Learning ColdFusion 9: Application-Specific Data Sources
@Ben, No offence, but if people were really wanting advanced features they would be using a platform like ASP.NET MVC. CFML is so structurally compromised as a tag-based scripting language that ... read »
Feb 9, 2012 at 10:03 PM
Subversion - Cleanup Failed To Process The Following Paths
@Leviaguirre, do you still have problems with this? ... read »