Twitter: raymondcamden

Address: Lafayette, LA, USA

Ask a Jedi: Frames and Model-Glue

01-17-2007 5,288 views ColdFusion

Yesterday Dan asked the following question about frames and Model-Glue:

Basically, my question is about using frames within my application. I basically want to use a frame for my avigation that never gets reloaded and another frame below it for the page displays. The reason I am using a frame for the navigation is that I am also trying to implement chat functionality within my ColdFusion app. The chat core needs to sit in a page that doesn't get refreshed, thus my need for a frame within my application. How would I go about in setting up this layout with my application using the Model-Glue framework?

The short answer to this is that you don't do anything special for frames when it comes to Model-Glue. What is interesting is that a very similar issue came up last week. I was doing training for a group of developers using Model-Glue and Spry. When it came time to talk about the URL to use for Spry's AJAX requests, I made the point that requesting XML (or loading a frame) is no different than any other Model-Glue request.

So to take your frames request and show a practical example, let's first look at a simple example of framed code:

view plain print about
1<frameset cols="200,*" bordercolor="#333333" framespacing="2" border="5">
2 <frame src="navserver.cfm" name="frame_nav" resize="yes" marginwidth="0" marginheight="0" framespacing="0" title="Navigation">
3 <frame src="right.cfm?target=" name="frame_detail" id="frame_detail" resize="yes" marginwidth="0" marginheight="0" framespacing="0" title="Main window">

In case folks are curious - these frames come from the ColdFusion administrator (the only site I know that actually uses frames). The code we want to focus on is the two frame tags. Note they both use a SRC attribute which points to a URL. So in a Model-Glue site, the frames could look like so:

view plain print about
2 <frame src="index.cfm?event=page.leftframe">
3 <frame src="index.cfm?event=page.rightframe">

So to make this absolutely crystal clear - there is nothing special about using frames or AJAX requests in Model-Glue. Just remember your URL format (index.cfm?event=X) and use it for your links.

p.s. Don't forget Model-Glue has a set of predefined variables in the viewState, including one for index.cfm?event=. So technically, to make a link to event X, you would normally use this:

view plain print about
2<a href="#viewState.getValue("myself")#X">X</a>

As a hint - I recommend copying out that myself value to a variable if you will have a lot of links on a page (like your display template).