Dynamic menu problem!

"Eje Thorarinsson (@home)" <[email protected]>
Newsgroups gmane.comp.java.struts-menu.user
Message-ID <[email protected]>
Hi!

Wonder if I could get some help with my attempts to write a dynamic menu 
using the example from 
http://demo.raibledesigns.com/appfuse/dynamicMenu.jsp.

A call is made from a JSP page to a bean which basically replaces the 
database in the example mentioned, and  includes the calls to the Struts 
Menu api. I only get the Parent  menu item displayed and no child menu 
item. No matter what I do, nothing turns up.

The JSP page includes the following:

 <body>
    <h2>Test av Struts Menu.... </h2><br>
    
    <!-- Skapa Dynamisk Meny -->
    <%
      // Dynamisk meny som skapas utifrån en bean
      MenyBean meny = new MenyBean(application);
      meny.setMeny("Parent", null, "Dynamisk Förälder", "Dynamisk 
Förälder Tooltip", null);
      meny.setMeny("Child", "Parent", "Dynamiskt Barn", "Dynamiskt Barn 
Tooltip", "http://www.google.com");
      meny.skapaMeny();
    %>
   
    <!-- Visa dynamisk meny -->
    <menu:useMenuDisplayer name="ListMenu" repository="repository">
      <menu:displayMenu name="Parent"/>
    </menu:useMenuDisplayer>
   
  </body>

I attach the JSP page and Bean for generating the menus. Thankful for 
any help with this :)

BTW...Is there any API documentation around?

Thanks, and happy easter!
/Eje Thorarinsson, Sweden
MenyBean.java (text/plain, 2.3 KB)
package se.police.rps.macs.gemensam;

import java.io.Serializable;
import javax.servlet.ServletContext;

import net.sf.navigator.menu.MenuComponent;
import net.sf.navigator.menu.MenuRepository;

/**
 * <p><b>Beskrivning:</b><br>
 * Denna Bean används för att skapa dynamiska menyer
 * 
 * <p><b>Ansvar:</b><br>
 * -  Definiera dynamiska menyer för websidorna i MACS
 * </p>
 *
 * @author     Eje Thorarinsson, Quaint Technology
 * @version    $Revision: 1.0 $<br>$Date: 2004/04/08 13:00:00 $<br>
 */
public class MenyBean implements Serializable {
	
	ServletContext httpContext;
	MenuRepository repository;
	MenuComponent mc;
	
	/**
	 * Huvudkonstruktor
	 *
	 *@param ctx	-	ServletContext
	 */
	public MenyBean(ServletContext ctx) 
	{
		this.httpContext = ctx;
		
		// Instansiera ett menyrepository
		repository = new MenuRepository();		
		MenuRepository defaultRepository = (MenuRepository)
							httpContext.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
		repository.setDisplayers(defaultRepository.getDisplayers());
	}

	/* -- PUBLIKA METODER -- */
	
	/**
	 * Skapa en meny komponent. 
	 * 
	 * @param namn		-	Sträng som sätter namn på komponenten
	 * @param	titel		-	Den menytitel som visas
	 * @param	toolTip	-	Ett tips som visar vad som avses med menyalternativet
	 */	
	public void setMeny(String namn, String parent, String titel, String toolTip, String location) 
	{
		// Skapa en ny Meny instans
		MenuComponent mc = new MenuComponent();
		
		// Kolla om menyn har en förälder
		if(parent != null)
		{
			// Om så är fallet, hämta en referens till föräldern
			MenuComponent parentMenu = repository.getMenu(parent);
			
			// Om ingen referens finns, skapa en
			if (parentMenu == null) {
					System.out.println("Menyn '" + namn + "' finns inte!");
					parentMenu = new MenuComponent();
					parentMenu.setName(parent);
					repository.addMenu(parentMenu);
			}
			
			// Registrera menyn som en förälder
			mc.setParent(parentMenu);	
		}
		
		// Lägg till attribut
		mc.setName(namn);
		mc.setTitle(titel);	
		mc.setToolTip(toolTip);	
		if(location != null)
			mc.setLocation(location);
		
		// Lagra i Repository	
		repository.addMenu(mc);		
	}

	
	/**
	 * Skapa menyn utifrån angivna värden.
	 */
	public void skapaMeny() {     
		httpContext.setAttribute("repository", repository);
	}
}
page-defaults.jsp (text/html, 919 B)
<%@ page language="java"%>
<%@ page pageEncoding="ISO-8859-1" %>
<%@ page contentType="text/html; charset=ISO-8859-1" %>

<%@ taglib uri="http://struts-menu.sf.net/tag" prefix="menu" %>
<%@ taglib uri="http://struts-menu.sf.net/tag-el" prefix="menu-el" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql" %>

<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>
index.jsp (text/html, 2.4 KB)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- Ladda default värden för sidan -->
<%@ include file="page-defaults.jsp"%>

<!--
<%@page import="net.sf.navigator.menu.MenuComponent"%>
<%@page import="net.sf.navigator.menu.MenuRepository"%>
-->

<%@page import="se.police.rps.macs.gemensam.MenyBean"%>

<html:html locale="true">
  <head>
    <html:base />
    <title>Testsida för Struts Menu</title>

    <!-- Menu specifika attribut -->
    <link rel="stylesheet" type="text/css" media="screen" href="styles/global.css" />
    <link rel="stylesheet" type="text/css" media="screen"  href="styles/menuExpandable.css" />    
    <script type="text/javascript" src="scripts/menuExpandable.js"></script>    
    <!-- Menu specifika attribut -->
  </head>
  
  <body>
    <h2>Test av Struts Menu.... </h2><br>
    
    <!-- Statisk meny -->
    <menu:useMenuDisplayer name="ListMenu" bundle="org.apache.struts.action.MESSAGE">
      <menu:displayMenu name="ASPMeny"/>
      <menu:displayMenu name="PASSMeny"/>
    </menu:useMenuDisplayer>    
     
    <!-- Skapa Dynamisk Meny -->
    <%
      /*
      MenuRepository repository = new MenuRepository();      
      MenuRepository defaultRepository = (MenuRepository)
                application.getAttribute(MenuRepository.MENU_REPOSITORY_KEY);
      repository.setDisplayers(defaultRepository.getDisplayers());
      
      MenuComponent mc1 = new MenuComponent(); 
        mc1.setName("Parent"); 
        mc1.setToolTip("Dynamisk meny parent 1");
        mc1.setTitle("Parent 1");
      
      MenuComponent mc2 = new MenuComponent(); 
        mc2.setParent(mc1);
        mc2.setToolTip("Dynamisk meny child 1");
        mc2.setTitle("Child 1");
        mc2.setLocation("http://www.aftonbladet.se");
            
      repository.addMenu(mc1);
      pageContext.setAttribute("repository", repository); 
      */
      
      // Dynamisk meny som skapas utifrån en bean
      MenyBean meny = new MenyBean(application);
      meny.setMeny("Parent", null, "Dynamisk Förälder", "Dynamisk Förälder Tooltip", null);
      meny.setMeny("Child", "Parent", "Dynamiskt Barn", "Dynamiskt Barn Tooltip", "http://www.google.com");
      meny.skapaMeny();
    %>
    
    <!-- Visa dynamisk meny -->
    <menu:useMenuDisplayer name="ListMenu" repository="repository">
      <menu:displayMenu name="Parent"/>
    </menu:useMenuDisplayer>
    
  </body>
</html:html>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.