Struts2 + Freemarker. Below code is working fine but I want to know anyone can simplify it more. I see repeated code to generate html tags.
Below code looks alot to generate custom menu with 3 links
Anyone got any better solution?
<@s.set var="page" value="com.opensymphony.xwork2.ActionContext.name" />
<@s.url action="home" var="urlHome" />
<@s.url action="about" var="urlAbout" />
<@s.url action="contact" var="urlContact" />
<#if page=='home'>
<@currentPage page="%{urlHome}" title="Home"/>
<@s.a href="%{urlAbout}">About Us</@s.a>
<@s.a href="%{urlContact}">Contact Us</@s.a>
<#elseif page=='about' >
<@s.a href="%{urlHome}">Home</@s.a>
<@currentPage page="%{urlAbout}" title="About Us"/>
<@s.a href="%{urlContact}">Contact Us</@s.a>
<#elseif page=='contact' >
<@s.a href="%{urlHome}">Home</@s.a>
<@s.a href="%{urlAbout}">About Us</@s.a>
<@currentPage page="%{urlContact}" title="Contact Us"/>
<#else>
<@currentPage page="%{urlHome}" title="Home"/>
<@s.a href="%{urlAbout}">About Us</@s.a>
<@s.a href="%{urlContact}">Contact Us</@s.a>
</#if>
Macro
<#macro currentPage page title>
<div class="menu-image">
<img src="<@s.url value="/images/on-left.gif"/>"/>
</div>
<div class="on">
<@s.a cssClass="over" href="${page}">${title}</@s.a>
</div>
<div class="menu-image">
<img alt="" src="<@s.url value="/images/on-right.gif"/>"/>
</div>
</#macro>
Compare the name of the page inside the macro or set it as an attribute of the macro
Macro
Or with a boolean
You can also use a wrapper div with CSS and display/hide items based on that.