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
>