The className property will return the currentPage className for the html tags when the pagename matches the current node we render


import org.apache.tapestry5.BindingConstants;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;

public class MenuItem  {
    @Property @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.LITERAL)
    private String page;
    
    @Property @Parameter(required = false, allowNull = true, defaultPrefix = BindingConstants.LITERAL)
    private boolean isPage = true;
        
    @Inject
    private Messages messages;

    @Inject
        private ComponentResources resources;
        
    public String getPageTitle() {
        String key = page + "-title";           
        return messages.get(key);
    }
    
    public String getClassName() {
                if (resources.getPageName().equalsIgnoreCase(page)) {
                        return "selected";
                }
        return null;
    }
}



<li xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
        <t:if test="isPage">
                <t:pageLink page="${page}" class="${className}">${pageTitle}</t:pageLink>
         <p:else>
                <a href="#" class="${className}">${pageTitle}</a>
         </p:else>
         </t:if>
        <ul>
                <t:body/>
        </ul>
</li>

Tapestry5LayoutWithMenuMenuItem (last edited 2009-10-20 18:12:02 by deian)