Ok, in my application I followed your directions to implement Tiles features using Clay. I have the following component declared in the global clay config :
<component jsfid="baseLayout" extends="clay"> <attributes> <set name="clayJsfid" value="/gabarit/gabarit.html"/> </attributes> </component> Then I have the page selectServices.xml wich contains : <?xml version='1.0' encoding="UTF-8"?> <!DOCTYPE view PUBLIC "-//Apache Software Foundation//DTD Shale Clay View Configuration 1.0 //EN" "http://struts.apache.org/dtds/shale-clay-config_1_0.dtd"> <view> <component jsfid="/selectServices.xml" extends="baseLayout"> <symbols> <set name="titre" value="Accueil - Portail des services ministériels" /> <set name="entete" value="/gabarit/entete.html" /> <set name="piv" value="/gabarit/piv.html" /> <set name="ivpied" value="/gabarit/pivpied.html" /> <set name="contenu" value="" /> </symbols> </component> </view> And finally the page gabarit.html wich has a basic structure like that : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head jsfid="clay" clayJsfid="@entete" allowBody="false"> </head> <body> <div id="piv-bandeau" jsfid="clay" clayJsfid="@piv" allowBody="false"> </div> <div id="contenu" jsfid="clay" clayJsfid="@contenu" allowBody="false"> </div> <div id="piv-pied" jsfid="clay" clayJsfid="@ivpied" allowBody="false"> </div> </body> </html> If you run this, you will receive a NullPointerException because contenu symbol has the null value. So I was wondering if it was a correct behavior. On 12/5/05, Gary VanMatre <[EMAIL PROTECTED]> wrote: > > > Something maybe that should improved is when the symbol value is null > > instead of getting a nullpointer exception maybe do like Tiles does. > > > > Clay's behavior handling symbol replacement should be as follows: > > If a symbol is null, it will be replaced as an empty string within the > token if the token length is greater than the symbol. > > <set name="@myvalue"> > "testing @myvalue a symbol" --> "testing a symbol " > > If the symbol is null and the target expression's length is zero, the > attribute is ignored and not passed to the component. > > <set name="@myvalue"> > "@myvalue" --> N/A, ignored > > If a symbol is not defined, it will not be replaced with the token. > > "@myvalue" --> "@myvalue" > > Somthing that I fixed last weekend was the case sensitivity on > symbols. HTML attributes that are not defined by a bound component using > the jsfid attribute, are considered symbols. > > <span jsfid="outputText" class="displayclass" /> > > <set name="styleClass" value="@Class"/> > > The HTML parser normalizes the case of attributes to lower case. The > token replacement is now case insensitive. The example above will now work. > > What is the scenario that you are talking about? Please give an example. > > > -- > > Alexandre Poitras > > Québec, Canada > > > > Gary > -- Alexandre Poitras Québec, Canada