Ok, and along with that question, what would be the correct way of doing the following:
<component jsfid="baseLayout" extends="clay" id="base"> <attributes> <set name="clayJsfid" value="/templates/layout.html" /> </attributes> <symbols> <set name="@headerContent" value="/pages/header.html"/> </symbols> </component> <component jsfid="welcomePage" extends="baseLayout" id="welcome"> <attributes> <set name="clayJsfid" value="/templates/layout.html" /> </attributes> <symbols> <set name="@title" value="Welcome" /> <set name="@bodyContent" value="/pages/welcomeBody.html" /> </symbols> </component> <component jsfid="baseLayout" extends="clay" id="hello"> <attributes> <set name="clayJsfid" value="/templates/layout.html" /> </attributes> <symbols> <set name="@title" value="Hello World" /> <set name="@bodyContent" value="/pages/helloBody.html" /> </symbols> </component> I ask, because the above does not work. Thanks. Gregg On 4/11/06, Gregg Bolinger <[EMAIL PROTECTED]> wrote: > > Ok, great so far. I got soemthing working. The problem was not having > that welcome.html file that pulled everything together. And that leads me > to my next question(s). > > Tell me if this is a correct statement. > > So for every page I have I'll need a page that is the glue (welcome.html) > as well as an html page that is the body for said page (welcomeBody.html). > Assuming of course I am using the same header/footer/sidebar, etc and the > only thing changing is the body. So I might also have > > login.html - loginBody.html > register.html - registerBody.html > > If that is a true statement, is there any way to get rid of that glue > page? Is there anyway to tell Clay/Shale to just use the layout.html and > plug in the "components" I need somehow dependent on the URL or navigation? > > So rather than having loginBody.html maybe I just have login.html which > just contains the body I need. In the above scenerio it would be > loginBody. And the system knows that when I request login.html go grab > layout.html and plug login.html into the correct spot? Am I making any > since? > > Basically, I don't understand the reason, beyond the glue aspect, of > having a page whose contents don't get rendered at all. > > Thanks. > > Gregg > > > On 4/10/06, Gary VanMatre <[EMAIL PROTECTED]> wrote: > > > > >Gary, I appreciate the information. Ok, here is what I have and it is > > not > > >working. Bear with me, I am going to post the bulk of my files, though > > the= > > >y > > >are quite short. > > > > > > > > >[web.xml ] > > > > I didn't seen anything that didn't look correct in the web.xml snippet > > you provided. > > One thing to check is the chains-config.xml. If you are using > > the ContextRelativePathFilter > > to prevent direct access to resources, make sure that "/S*\.html" is > > added to the includes > > attribute list. > > > > >[clay-config.xml] > > ><view> > > > > > > <component jsfid=3D"baseLayout" extends=3D"clay" id=3D"base"> > > > <attributes> > > > <set name=3D"clayJsfid" value=3D"/templates/layout.html" /> > > > </attributes> > > > <symbols> > > > <set name=3D"title" value=3D"Hello World" /> > > > <set name=3D"bodyContent" value=3D"/pages/welcome.html" /> > > > </symbols> > > > </component> > > > > > ></view> > > > > > >[clay-symbols-config.xml ] > > ><view> > > > > > > <component jsfid=3D"username" extends=3D"inputText" > > id=3D"username"> > > > <attributes> > > > <set name=3D"value" value=3D"#{ welcomeBean.username}"/> > > > <set name=3D"size" value=3D"20"/> > > > <set name=3D"maxlength" value=3D"30"/> > > > <set name=3D"required" value=3D"true"/> > > > <set name=3D"immediate" value=3D"true"/> > > > </attributes> > > > </component> > > > > > > <component jsfid=3D"password" extends=3D"inputSecret" > > id=3D"password"> > > > <attributes> > > > <set name=3D"value" value=3D"#{welcomeBean.username}"/> > > > <set name=3D"size" value=3D"20"/> > > > <set name=3D"maxlength" value=3D"30"/> > > > <set name=3D"required" value=3D"true"/> > > > <set name=3D"immediate" value=3D"true"/> > > > </attributes> > > > </component> > > > > > ></view> > > > > > >[layout.html] > > ><html> > > ><head> > > > <title> > > > Test > > > </title> > > > > > ></head> > > ><body> > > ><table width=3D"100%" cellpadding=3D"2" cellspacing=3D"0" border=3D"1"> > > > <tr> > > > <td> > > > <span jsfid=3D"clay" clayJsfid=3D"@bodyContent" > > >allowBody=3D"false">Body Content</span>Body Content > > > </td> > > > </tr> > > ></table> > > ></body> > > ></html> > > > > > >[welcome.html ] > > ><table> > > > <tr> > > > <td>Username</td> > > > <td><input jsfid=3D"username" type=3D"text"/></td> > > > </tr> > > > <tr> > > > <td>Password</td> > > > <td><input jsfid=3D"password" type=3D"password"/></td> > > > </tr> > > ></table> > > > > > > > When you are using clay full html views exclusively, the entry point to > > the page > > needs to be a html file. This means that you don't have a pseudo page > > definition > > like in tiles. You can do this sort of thing with clay's full XML views > > as the page > > entry point – usecase symbols example (page1 & page2). > > > > What you need in your example is for the welcome.html page to be a > > generic entry > > point that pulls a layout in and overrides the body using a symbol (the > > page3.html > > symbols use cases example). > > > > So in your example you might want to call the welcome.html template > > welcomeBody.html. > > And, then add a welcome.html entry point template that pulls it all > > togather. > > > > welcome.html example: > > <html jsfid="baseLayout" > > bodyContent="/welcomeBody.html" > > allowBody="false"> > > > > <head><title>Mock Header</title></head> > > <body>The entire document is replaced by the layout.</body> > > </html> > > > > The bodyContent attribute in the html node becomes a symbol that > > overrides > > the @bodyContent in the layout. > > > > > > >And when I go to http//localhost:8080/test/welcome.html I get a 500, > > page > > >cannot be found [welcome.html]. I have it under the web root pages dir > > and > > >I have layout.html under templates. Looking for suggestions one what I > > have > > >done wrong. > > > > The 500 response code indicates that there was a server error. Check > > the > > server logs for more information on the exception. > > > > > > > > > >Thanks. > > > > > >Gregg > > > > Gary > > > >