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>