struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Laurie Harper <lau...@holoweb.net>
Subject Re: html:link and nested java logic (2)
Date Mon, 16 Jan 2006 22:38:51 GMT
Steven McClintoc wrote:
> Hi there!
> 
> I have a page which consists out of three files:
>  - header.jsp
>  - sidebar.jsp
>  - main.jsp
> 
> 
> header.jsp contains a navigational bar in which I want to highlight the
> page currently be shown, e.g.
> 
>    -------------------------------------------------
>    Home | Item1 | Item2 | *Item3*| Item4
>    -------------------------------------------------
> 
> if Item3 is the active page.
> 
> Now, my first approach was to include header.jsp and sidebar.jsp with
> 
> 
>                 <jsp:include page="../includes/Header.jsp" >
>                         <jsp:param name="highlight" value="home" />
>                 </jsp:include>
> 
>                 <%@ include file="../includes/Sidebar.jsp" %>
> 
> 
> 
> Within Header.jsp I checked against the request parameter highlight:
> 
> 
>                 <% String hl = request.getParameter("highlight"); %>
>                 <a  <% if (hl.equals("guestbook")) { %> class="highlight" <%
> } %> href="/Phoenix/jsp/guestbook.jsp">Guestbook</a> |
> 
> 
> 
> The problem is that this approach understandably doesn't work well with
> URL-rewriting.

I'm not sure what the problem is with URL rewriting; what effect does 
that have on this approach?

> Unfortunately changing the code to use <html:link> instead of <a href>
> as in
> 
> 
>                 <html:link forward="guestbook"> <% if
>                 (hl.equals("guestbook")) { %> class="highlight" <% } %>
> Guestbook </html:link> |
> 
> doesn't work. I suppose that nested tags arren't allowed here.

The problem with that is you're putting the class attribute inside the 
html:link element's body -- i.e. that isn't including an attribute in 
the generated HTML tag.

> Does someone know a solution to this problem?

You might want to look into using Tiles for this sort of page 
composition task. It can make things a lot cleaner. But to stick with 
what you have, based on a request parameter to determine which link 
should be highlighted, here are a couple of options:

   <% String h1 = request.getParameter("highlight"); %>
   <html:link forward="guestbook" class='
       <%= h1.equals("guestbook") ? "highlight" : "" %>'>
     Guestbook
   </html:link>

or, using JSTL to avoid the ugly scriptlets:

   <html:link forward="guestbook" class="${
       param['highlight'] == 'guestbook' ? 'highlight' : ''}">
     Guestbook
   </html:link>

L.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Mime
View raw message