Definitely a wrong mailing list. Please ask the Tiles Users mailing list: http://tiles.apache.org/mail.html
Antonio 2008/10/28 Stephan Schröder <[EMAIL PROTECTED]>: > > hi, > > my app has three packages public, sucurity (login,register,...) and private. > These packages correspond in that all actions within this package should be > displayed with the same menus. Therefore (i guess) i have (not yet, but > this is my idea) three base layouts from which to extend: > > <definition name="public.layout" template="/layouts/publicLayout.ftl"> > <put-attribute name="menu" value="/tiles/public/common_menu.ftl" /> > <put-attribute name="body" value="/tiles/public/empty_body.ftl" /> > </definition> > > <definition name="security.layout" template="/layouts/securityLayout.ftl"> > <put-attribute name="menu" value="/tiles/security/common_menu.ftl" /> > <put-attribute name="body" value="/tiles/security/empty_body.ftl" /> > </definition> > > <definition name="private.layout" template="/layouts/privateLayout.ftl"> > <put-attribute name="menu" value="/tiles/private/common_menu.ftl" /> > <put-attribute name="body" value="/tiles/private/empty_body.ftl" /> > </definition> > > There seem to be three different ways to achieve my goal (with Tiles 2.1): > 1) using Wildcards: > > <definition name="package_*.body_*" extends"{1}.layout"> > <put-attribute name="body" value="/tiles/{1}/{2}.ftl" /> > </definition> > > In that case my action mapping would have to provide the package name: > <package name="public" namespace="/public" ...> > ... > <action...> > ... > <result type="tiles"> > package_public.body_nextPage <!-- hardcoded package name --> > </result> > </action> > > </package> > > Is there a better possiblity to replace the hardcoded package name with > something i don't have to type every time than extending the tiles-Result > with: > > public class CustomTilesResult extends TilesResult{ > > public void setLocation( String location ) { > this.location = > "package_"+ServletActionContext.getActionMapping.getNamespace().substring(1)+ > ".body_"+location; > } > } > > 2)using EL: > <definition name="*" extends"${package}.layout"> > <put-attribute name="body" value="/tiles/${package}/{1}.ftl" /> > </definition> > > This is much nicer than 1) because i don't have to code anything for the > action mappings. But is there an expression to compute the current package > with the EL? And how do i enable EL when i don't user the > http://tiles.apache.org/framework/tutorial/advanced/el-support.html > TilesServlet but the TilesListener (because i want > FreeMarker-integreation)? > Do i have access to the value stack when using the EL? > > 3)using a ViewPreparer to create the right menu: > in this version i wouldn't have my three base layouts but only one with a > viewpreparer that initialises the menu structure > <definition name="*" template="/layouts/baseLayout.ftl" > preparer="MenuViewPreparer"> > <put-attribute name="menu" value="/tiles/dynamic_menu.ftl" /> > <put-attribute name="body" value="/tiles/{1}.ftl" /> > </definition> > > So the MenuViewPrepare would by responsible to figure out which package is > used. That should work like this: > public void execute(TilesRequestContext tilesContext, AttributeContext > attributeContext) { > switch( ServletActionContext.getActionMapping.getNamespace() ) { > case: ... > { > > > Which approach is preferable? Is there an even better approach? > > I don't understand the "if you need"-part of this statement > http://tiles.apache.org/framework/getting_started.html "if you need JSP > support, copy the tiles-jsp-VERSION.jar in the WEB-INF/lib directory of your > web application" . > Don't you always use the JSP-Tags at least in your baseLayout-File? > I guess i also have to include this when using FreeMarker because i call the > JSP-Tags from within FreeMarker too!? > > Regards, > Stephan > -- > View this message in context: > http://www.nabble.com/different-tiles-definition-depending-on-the-package-of-the-action-mapping-tp20206579p20206579.html > Sent from the Struts - User mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]