So I've found a method that works.  Perhaps it s what you were trying to 
explain in the first place.

Rather than use an EL expression in the tiles definition to say which object 
should be used in the page title key parameter, I just define a parameter 
called titleKeyParam1 that the controller will optionally set directly.   There 
is nothing about the parameters in the tiles definition file, only the 
titleKey.  

ie.
tiles-layout.xml
    <definition name="recordDetail" extends=".template">        <put 
name="titleKey" value="record.detail.title"/>        <put name="body" 
value="/WEB-INF/jsp/tiles/recordDetail.jsp"/>    </definition>


jsp file        <fmt:message key="${titleNameKey}">            
<fmt:param><c:out value="${titleKeyParam1}"/></fmt:param>        </fmt:message>


- Then the controller optionally sets the titleKeyParam1 as an object in the 
model.




> From: [EMAIL PROTECTED]
> To: user@struts.apache.org
> Subject: RE: i18n and variable tiles definitions
> Date: Thu, 20 Dec 2007 13:47:33 -0800
> 
> 
> btw, I've also tried this slight variation:
> 
> tiles.xml
> <definition name="foo" extends=".template">         <put> name="titleKey" 
> value="record.detail.title" type="string"/>        <put> 
> name="titleKeyParam1" value="${recordId}" type="string"/></definition>
> 
> Which gives me the page title:  "Record Detail: ${recordId}".  Also giving me 
> the problem that it is not evaluating the expression.
> 
> 
> 
> > From: [EMAIL PROTECTED]
> > To: user@struts.apache.org
> > Subject: RE: i18n and variable tiles definitions
> > Date: Thu, 20 Dec 2007 13:41:13 -0800
> > 
> > 
> > This idea seems really promising, but I have been unable to implement it.  
> > Here is what I have tried:
> > 
> > 
> > resource_en.properties
> > record.detail.title=Record Detail:{0}
> >  
> > tiles.xml
> > <definition name="foo" extends=".template">     <put
> > name="titleKey" value="record.detail.title"
> > type="string"/>    <put
> > name="titleKeyParam1" value="recordId"
> > type="string"/></definition>
> > 
> > jsp template page
> > <c:set var="titleNameKey"><tiles:getAsString 
> > name="titleKey"/></c:set><c:set var="titleNameKeyParam1"><tiles:getAsString 
> > name="titleKeyParameter1"/></c:set><fmt:message key="${titleNameKey}">    
> > <fmt:param><c:out value="${titleNameKeyParam1}"/></fmt:param></fmt:message>
> > 
> > 
> > My controller passes to the jsp view a parameter called "recordId".  I know 
> > that is working because I can use the value elsewhere.
> > 
> > The problem is that my title displays as: "Record Detail: recordId" instead 
> > of showing me the value of ${recordId}
> > (I expected something like "Record Detail: 12345")
> > 
> > I've tried a few variations on this without success :-(   How can I get the 
> > title to show the value of the expression i set in my tiles definition?
> > 
> > 
> > 
> > 
> > > Date: Thu, 20 Dec 2007 15:01:20 -0500
> > > From: [EMAIL PROTECTED]
> > > To: user@struts.apache.org
> > > Subject: Re: i18n and variable tiles definitions
> > > 
> > > you can do the same thing passing the strings keys in the tiles, then 
> > > play with the jsp pages using JSTL <fmt tag..>
> > > 
> > > <tiles:importAttribute name="titleKeyParameter1" />
> > > 
> > > <fmt:message var="parameter1Value" value="${titleKeyParameter1}"/>
> > > 
> > > <fmt:message key="foo">
> > >    <fmt:param><c:out value="${parameter1Value}"/></fmt:param>
> > >    ... //repeat process....
> > > </fmt:message>
> > > 
> > > I'm pretty sure you should be able to also put <fmt> tags within <fmt> 
> > > tags (nested), but I've never tried it.
> > > 
> > > 
> > > 
> > > Peter Rumstle wrote:
> > > > Thats an excellent solution for the i18n part.  I will change my code 
> > > > to use this method.   
> > > > 
> > > > I still don't know what the best way to add variables to the title tho. 
> > > >  I know i can have variable placeholders in my resource file ex.
> > > > 
> > > > resource_en.properties
> > > > record.detail.title=Record Detail:{0}
> > > > user.detail.title=User Detail:{0}
> > > > application.title=Hello World Application
> > > > 
> > > > tiles.xml
> > > > <definition name="foo" extends=".template">    <put name="titleKey" 
> > > > value="record.detail.title" type="string"/></definition>
> > > > 
> > > > jsp template page
> > > > // Somehow i need to pass in optional variables that are provided by my 
> > > > controller to the title
> > > > <fmt:message key="${titleNameKey}"/>
> > > > 
> > > > 
> > > > Is this possible with tiles?
> > > > 
> > > > btw, sorry for posting to two mailing lists about this if thats bad 
> > > > form.
> > > > 
> > > > 
> > > > 
> > > > 
> > > >> Date: Thu, 20 Dec 2007 13:29:32 -0500
> > > >> From: [EMAIL PROTECTED]
> > > >> To: user@struts.apache.org
> > > >> Subject: Re: i18n and variable tiles definitions
> > > >>
> > > >> May I suggest to instead of using the "title" value in the tiles, use 
> > > >> the keys (e.g. "titleKey"), then fetched it using whatever approach 
> > > >> you 
> > > >> want to:
> > > >>
> > > >> Example:
> > > >>
> > > >> resource_en.properties
> > > >>
> > > >> application.title=Hello World Application
> > > >>
> > > >>
> > > >> tiles.xml
> > > >>
> > > >> <definition name="foo" extends=".template">
> > > >>    <put name="titleKey" value="application.title" type="string"/>
> > > >> </definition>
> > > >>
> > > >> jsp page
> > > >>
> > > >> <c:set var="titleNameKey"><tiles:getAsString name="titleKey"/></c:set>
> > > >>
> > > >> <fmt:message key="${titleNameKey}"/>
> > > >>
> > > >> (of course this uses unnecessary code, but the above will work for 
> > > >> sure)
> > > >>
> > > >> Hope this helps!
> > > >>
> > > >>
> > > >> Peter Rumstle wrote:
> > > >>> Hi everyone, 
> > > >>>
> > > >>> I am running into what appears to be a limitation in tiles.  I hope 
> > > >>> someone has encountered this problem before and knows of a 
> > > >>> workaround.  
> > > >>>
> > > >>> I have a tiles based layout that accepts a "title" in the tiles 
> > > >>> definition.
> > > >>>
> > > >>>     <definition name="recordDetail" extends=".template">
> > > >>>         <put name="title" value="Record Detail"/>
> > > >>>         <put name="body" value="/WEB-INF/jsp/tiles/recordDetail.jsp"/>
> > > >>>     </definition>
> > > >>>
> > > >>> My problem is that I need the title to be more dynamic.  It needs to 
> > > >>> do two things:
> > > >>>
> > > >>> 1. Support different titles depending on the locale.
> > > >>> 2. Accept a dynamic field identifying the record number that the page 
> > > >>> is showing.
> > > >>>
> > > >>> For example, rather than say "Record Detail" like in my example it 
> > > >>> should say "Record Detail: 38847829" and in other languages it should 
> > > >>> be translated using an existing ResourceBundle (ex. "Detalle De 
> > > >>> registro: 38847829").
> > > >>>
> > > >>> My problem lies in the fact that my .template tile includes the 
> > > >>> <title> tag, but does not know which page it is rendering.  Only the 
> > > >>> "body" tile and the actual tiles definition knows which page it is 
> > > >>> rendering for.  Other pages use the same .template tile but require 
> > > >>> different dynamic fields in their title.
> > > >>>
> > > >>> Has anyone got something like this working before?
> > > >>>
> > > >>> Thanks!
> > > >>>
> > > >>> _________________________________________________________________
> > > >>> Introducing the City @ Live! Take a tour!
> > > >>> http://getyourliveid.ca/?icid=LIVEIDENCA006
> > > >> -- 
> > > >>
> > > >> Alberto A. Flores
> > > >> http://www.linkedin.com/in/aflores
> > > >>
> > > >>
> > > > 
> > > > _________________________________________________________________
> > > > Discover new ways to stay in touch with Windows Live! Visit the City @ 
> > > > Live today!
> > > > http://getyourliveid.ca/?icid=LIVEIDENCA006
> > > 
> > > -- 
> > > 
> > > Alberto A. Flores
> > > http://www.linkedin.com/in/aflores
> > > 
> > > 
> > 
> > _________________________________________________________________
> > Introducing the City @ Live! Take a tour!
> > http://getyourliveid.ca/?icid=LIVEIDENCA006
> 
> _________________________________________________________________
> Use fowl language with Chicktionary. Click here to start playing!
> http://puzzles.sympatico.msn.ca/chicktionary/index.html?icid=htmlsig

_________________________________________________________________
Exercise your brain! Try Flexicon!
http://puzzles.sympatico.msn.ca/chicktionary/index.html?icid=htmlsig

Reply via email to