If you're using a JSP 1.2 container, JSTL can help out a bit. It doesn't look like you need an HTML form for any of this, you're constructing a bunch of links that will issue GETs to the action mapped to "/changePage". As long as that mapping uses a (Struts) form with a property called "pageName", it should work.
struts-config: <form-bean name="changePageForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="pageName" type="java.lang.String"/> </form-bean> <action path="/changePage" type="com.csc.ebilling.actions.ChangePageAction" name="changePageForm" scope="request" validate="false"/> JSP: <%@ page pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> <%@ taglib prefix="html" uri="http://jakarta.apache.org/struts/tags-html" %> <c:set var="commonImagePath" value="${pageContext.request.contextPath}/presentation/DEFAULT/images"/> <c:set var="currentPageName" value="${sessionScope.currentPageName}"/> <c:set var="topMenu" value="${sessionScope.topMenu}"/> <table> <tr> <c:forEach var="topMenuItem" items="${topMenu}"> <c:choose> <c:when test="${topMenuItem.menuItemName eq currentPageName}"> <td valign="bottom" align="right" class="tabselected"> <img src="<c:out value="${commonImagePath}/page_name_left_selected.gif"/>" border="0"> </td> ... </c:when> <c:otherwise> <td valign="bottom" align="right" class="tabunselected"> <html:link action="/changePage" paramId="pageName" paramName="topMenuItem" paramProperty="menuItemName"> <img src="<c:out value="${commonImagePath}/page_name_left_unselected.gif"/>" border="0"> </html:link> </td> ... </c:otherwise> <c:choose> </c:forEach> </tr> </table> Quoting Joanne L Corless <[EMAIL PROTECTED]>: > I know this may seem a little rude but no-one picked up on my question and > I really could use some help with this > > Regards > Joanne Corless > > ----- Forwarded by Joanne L Corless/UK/CSC on 14/10/03 13:36 ----- > > > Joanne L Corless > > /UK/CSC To: > [EMAIL PROTECTED] > > cc: > > 13/10/03 17:12 Subject: Best Practice > Question re: html links > > > > > > > > Hi, > > I am implementing a struts application with menu lists which need to be > dynamic based on a user role hierarchy, i.e not a simple user role = menu > list. Therefore I cannot set up menu lists in the tile definitions file as > they are > > I hold the menu list in a database which I am accessing via an EJB and > returning to the session using a vector of DAO object 's which contain the > basic information about each menu item, i.e name, link,type (we have > different types of links some open a pop-up window, others run an inline > java applet) > > Currently I am using standard Java scriptlets to access the vector and > print it out in the JSP tile page example below: > > <%@ page contentType="text/html;charset=UTF-8" language="java" %> > <%@ taglib uri="/struts/tiles" prefix="tiles" %> > <%@ taglib uri="/struts/logic" prefix="logic" %> > <%@ taglib uri="/struts/bean" prefix="bean" %> > <%@ taglib uri="/struts/html" prefix="html" %> > <%@ page import="com.csc.ebilling.ejb.common.MenuItemDAO" %> > <% > String commonImagePath= request.getContextPath() > +"/presentation/DEFAULT/images"; > String currentPageName = (String)session.getAttribute > ("currentPageName"); > java.util.Vector topMenu = (java.util.Vector) session.getAttribute > ("topMenu"); > %> > > <table> > <tr> > > <% > for (int i=0;i<topMenu.size();i++){ > // pageContext.setAttribute("topMenuItem", topMenuItem, > PageContext.PAGE_SCOPE); > MenuItemDAO topMenuItem = (MenuItemDAO) topMenu.get(i); > if (topMenuItem.getMenuItemName().equals(currentPageName)) > { > %> > <td valign="bottom" align="right" class="tabselected"> > <img src="<%=commonImagePath%>/page_name_left_selected.gif" > border="0"> > </td> > <td valign="bottom" background=" > <%=commonImagePath%>/page_name_mid_selected.gif" align="center" class > ="tabselected" nowrap style="background-repeat: repeat-x;"> > <span class="tabselected"><%=topMenuItem.getMenuItemName()%></span> > </td> > <td valign="bottom" align="left" class="tabselected"> > <img src="<%=commonImagePath%>/page_name_right_selected.gif" border > ="0"> > </td> > <% > } > else > { > %> > <td valign="bottom" align="right" class="tabunselected"> > <a href="<%=request.getContextPath()%>/changePage.do?pageName > =<%=topMenuItem.getMenuItemName()%>"> > <img src="<%=commonImagePath%>/page_name_left_unselected.gif" > border="0"> > </a> > </td> > <td valign="bottom" background=" > <%=commonImagePath%>/page_name_mid_unselected.gif" align="center" class > ="tabunselected" nowrap style="background-repeat: repeat-x;"> > <a href="<%=request.getContextPath()%>/changePage.do?pageName > =<%=topMenuItem.getMenuItemName()%>"> > <span class="tabunselected"><%=topMenuItem.getMenuItemName > ()%></span> > </a> > </td> > <td valign="bottom" align="left" class="tabunselected"> > <a href="<%=request.getContextPath()%>/changePage.do?pageName > =<%=topMenuItem.getMenuItemName()%>"> > <img src="<%=commonImagePath%>/page_name_right_unselected.gif" > border="0"> > </a> > </td> > > <% > } > } > %> > > </tr> > </table> > > > I realise that this is not best practice and I should be using the tag-libs > but I'm struggling to make the tag-libs work, I'm also confused about > whether this tile needs to be inside a form as I am not actually submitting > anything (as in a Login page), however I do need to pass a pageName > parameter into the request. > > The above example does work (sort of) however I am unable to extract the > pageName parameter in my action class as it keeps returning null > > I would really appreciate some pointers as I thought I had struts figured > but I now realise I've gone wrong somewhere along the line > > Regards > > Joanne Corless > > CSC Computer Sciences Limited > ( Office +44 (0)1772 318025 > ( Mobile +44 (0)7767 656588 > * email [EMAIL PROTECTED] > > > Based at: CSC, Alliance House, Library Road, Chorley, Lancs, PR6 7EN > CSC Computer Sciences Limited: Registered in England, No. 963578. > Registered office: Royal Pavilion, Wellesley Road, Aldershot, Hampshire, > GU11 1PZ. -- Kris Schneider <mailto:[EMAIL PROTECTED]> D.O.Tech <http://www.dotech.com/> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]