MenuItem.java

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;
    }
}

MenuItem.tml


<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>
						
  • No labels