I'm trying to create a dynamic menu using the tiles tutorial, but I get the
following error when I display the jsp:

[ServletException in:/topnavbar.jsp] Cannot find bean links in scope page'

What am I doing wrong?

thanks,
sriram

My implementation is as follows:

1. I have a topnvabar.jsp which is similar to the tiles example submenu.jsp:

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/tiles.tld" prefix="comp" %>

<%@ page import="java.util.Iterator" %>



<%-- Push component attributes in page context --%>

<comp:importAttribute />

<table>

<logic:present name="title">

<tr>

<th colspan=2>

<div align="left"><strong><bean:write name="title"/></strong></div>

</th>

</tr>

</logic:present>

<%-- Check if selected exist. --%>

<logic:notPresent name="selected" >

<% pageContext.setAttribute( "selected", "" ); %>

</logic:notPresent>

<%-- Prepare the links list to be iterated --%>

<bean:define id="links" name="links" type="java.util.List" scope="page" />

<% Iterator i = links.iterator(); %>

<%-- iterate on items list --%>

<%-- Normally, we should write something like this :

<logic:iterate id="item" name="items" type="java.lang.String" >

But, Struts doesn't declare the TEI class for iterate, and

some web container deal badly with the declared variable.

So, we use what follow instead.

--%>

<logic:iterate id="iterateItem" name="items" >

<bean:define id="item" name="iterateItem" type="java.lang.String"
scope="page" />



<tr>

<td width="10" valign="top" ></td>

<td valign="top" >

<%-- check if selected --%>

<logic:notEqual name="selected" value="<%=item%>">

<% // Compute link value

String link = (String)i.next();

if(link.startsWith("/") )

link = request.getContextPath() + link;

%>

<font size="-1"><a href="<%=link%>"><%=item%></a></font>

</logic:notEqual>

<logic:equal name="selected" value="<%=item%>">

<font size="-1" color="fuchsia"><%=item%></font>

</logic:equal>

</td>

</tr>

</logic:iterate>

</table>



2. I have a tilesDefinitons.xml with the following relevant entries:



<tiles-definitions>
    <definition name="baseDef" path="/TopLevelTemplate.jsp">
      <put name="title" value="" />
      <put name="topnavbar" value="topnavbar.links" />
      <put name="sectionnavbar" value="/sectionnavbar.jsp" />
      <put name="leftnavbar" value="/leftnavbar.jsp" />
      <put name="content" value="" />
      <put name="footer" value="/footer.jsp" />
    </definition>

    <definition name="topnavbar.links" path="/topnavbar.jsp" >
      <put name="selected" value="Home" />
      <putList name="items" >
        <add value="Home" />
        <add value="Campaign" />
        <add value="Segment" />
        <add value="Analyze" />
        <add value="Profile" />
        <add value="Admin" />
      </putList>
      <putList name="links" >
        <add value="home.action" />
        <add value="campaignlist.action?name=home" />
        <add value="home.action" />
        <add value="home.action" />
        <add value="home.action" />
        <add value="home.action" />
      </putList>
    </definition>

    <definition name="home" extends="baseDef">
      <put name="title" value="Campaign Manager Home" />
      <put name="content" value="/HomeContent.jsp" />
    </definition>

</tiles-definitions>





--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to