Die Common-Controls Tag Bibliothek

<menu:menu>

Mit dem Tag wird eine Menüdefinition eingeleitet. Die eigentlichen Menüeinträge werden mit <menu:menuitem>-Tags im Tag-Body angegeben.
../images/images/menu.gif

Body content: JSP
Tag class: MenuTag
 

[ Syntax ]

Standard Syntax
<menu:menu
[ action = "String" ]
[ height = "String" ]
[ id = "String" ]
[ imagemap = "String" ]
[ locale = "String" ]
[ menuid = "String" ]
[ name = "String" ]
[ permission = "ACL" ]
[ property = "String" ]
[ style = "String" ]
[ styleClass = "String" ]
[ styleId = "String" ]
[ type = "{main | tools | sidebar}" ]
[ width = "String" ]
>
...Body Content...

</menu:menu>
 

[ Attribute ]

AttributTypBeschreibungPflichtRTExp
actionString Gibt die Struts-Action an welche bei der Selektion eines Menüeintrages aufgerufen werden soll. Die Action kann jedoch auch individuell in den einzelnen Menüpunkten angegeben werden.  
heightString Setzt die Höhe des Kontrollelmentes. Die Höhe kann absolut oder prozentual angegeben werden.

Es hängt von dem jeweiligen Kontrollelement Painter ab, ob dieses Attribut ausgewertet wird.

Siehe HTML-Dokumentation

 
idString Weist dem Kontrollelement einen eindeutigen Bezeichner zu. Im Tag Body wird daraufhin eine Java Variable angelegt, auf die in Java Scriptlets zugegriffen werden kann. Diese Variable verweist auf die Kontrollelement Instanz (abgeleitet von Control).

Dieses Attribut wird meist in Verbindung mit dem type Attribut verwendet

Anmerkung: Da zur JSP Compile Zeit eine Java Variable mit diesem Bezeichner angelegt wird, muss hier ein String Literal (und keine Expression!) angegeben werden! Der Bezeichner muss den Regeln für gültiger Java Bezeichner folgen.

 
imagemapString Gibt den Namen einer Imagemap an, welche im Request abgelegt sein muss. Der Wert des imageref Properties der Menüeinträge wird auf die Einträge dieser ImageMap abgebildet. Die Abbildung erfolgt anhand des regulären Ausdrucks welcher jedem Eintrag der ImageMap zugeordnet ist.

Der Painter hängt dem imageref-Wert implizit die folgenden Suffixe an um unterschiedliche Zustände zu unterscheiden:

  • .sel = Selektierter Menüeintrag.
  • .dis = Disabled.
  • .unsel = Unselektierter Menüeintrag.

Der selektierte Menüpunkt wird immer über den aktuellen Menükontext bestimmt, welcher in der JSP-Seite mit <menu:ctx> oder in der Anwendung mit com.cc.framework.ui.control.MenuContext.setPath() eingestellt werden kann.

Anmerkung: Unter dem Namen muss eine ImageMap im Request abgelegt sein

 
localeString Weist das Kontrollelement an alle angegebenen Zeichenkettenliterale als Schlüssel für Textressourcen zu interpretieren.

Die folgenden Werte sind möglich:

  • "true" Die Lokalisierung ist aktiv und es wird die von Struts vergebene Ländereinstellung des angemeldenten Benutzers verwendet (wie in der HTTP Session unter dem Schlüssel org.apache.struts.action.LOCALE abgelegt).
  • "false" Die Lokalisierung ist nicht aktiviert. Alle Zeichenkettenliterale werden wie angegeben in die HTML Seite geschrieben.
  • ISO Code Die Lokalisierung ist aktiv und es wird die angegebene Sprache verwendet.

Bei aktivierter Lokalisierung werden die angegebenen Schlüssel von dem registrierten FrameworkAdapter (eine Interface Klasse) mit Hilfe der überschreibbaren localizeKey() Methode übersetzt. Der mitgelieferte StrutsFrameworkAdapter verwendet die in der struts-config.xml registrierten Message Resource Bundles für die Übersetzung des Ressourcen Schlüssels.

Zeichenketten die mit einem "#"-Zeichen beginnen werden grundsätzlich nicht lokalisiert (Das "#"-Zeichen wird jedoch abgeschnitten).

Alle Zeichenketten die von einem DataModel zurückgeliefert werden, sind ebenfalls von dem Lokalisierungsmechanismus ausgeschlossen, da dies in den Aufgabenbereich der Applikation fällt.

 
menuidString Legt den intern verwendeten Identifikator des Menüs fest. Es kann hier auch ein Menüpfad angegeben werden.

Ein Menü bzw. Menüpunkt gilt als selektiert, wenn der aktuelle Menü Kontextpfad mit dem hier angegebenen Identifikator beginnt!

Beispiel:

Die Id des Menüs ist admin/tools und der aktuelle Kontextpfad ist admin/tools/dbquery.
  • Das ganze Menü gilt damit als selektiert.
  • Ein untergeordneter Menüpunkt mit der Id dbquery würde nun als aktiver Menüpunkt dargestellt, da dessen vollständiger Menüpfad admin/tools/dbquery in dem Kontextpfad passt.
  • Der untergeordnete Menüpunkt mit der Id sessionlist würde als unselektierter Menüpunkt dargestellt, da sein vollständiger Menüpfad admin/tools/sessionlist nicht in den Kontextpfad passt.

Anmerkung: Einzelne Pfadelemente werden mit "/" getrennt

 
nameString Gibt den Namen der Java-Bean - eine Instanz der Klasse Control. Die Java-Bean muss im angegebenen Scope abgelegt sein.

Wenn das Tag von einem Struts <html:form> Tag umschlossen ist, dann muss kein Bean Name angegeben werden. In diesem Fall wird die Java-Bean über ein Property der Struts Formular Bean gezogen.

Anmerkung: Es muss ein gültiger Java Bezeichner angegeben werden.

 
permissionACL Mit diesem Attribut kann der Zugriff auf das Element beschränkt werden.

Berechtigungen werden über das Principal Objekt in der Benutzer Session geprüft. Das Principal Objekt wird mit der Methode SecurityUtil.registerPrincipal() in der Session registriert. Es wird vom Anwendungsentwickler durch Implementierung des Principal Interfaces zur Verfügung gestellt. Somit lassen sich sehr einfach beliebige Berechtigungssysteme mit dem Framework verbinden.

Berechtigungen werden immer in Form einer Access Control List (ACL) angegeben. Dabei handelt es sich um einen Ausdruck dessen Elemente Einzelberechtigungen sind. Das Framweork unterstützt die folgenden Berechtigungstypen, welche jedoch vom Anwendungsentwickler beliebig erweitert werden können:

Literal
true|false -> StaticPermission
Rolle
#rollenname -> RoleBasedPermission
Funktion
$funktionsname -> FunctionBasedPermission

Zur Formulierung der Ausdrücke kann die folgende Syntax verwendet werden:

PERMISSION_PREFIX
	: '#' | '$'

AND_OP
	: 'and' | '&' | '*'

XOR_OP
	: 'xor' | '^'

OR_OP
	: 'or' | '|' | '+'

UNARY_OP
	: '~' | '!'

permission
	: PERMISSION_PREFIX IDENTIFIER

primary_expr
	: permission
	| '(' expr_list ')'

unary_expr
	: primary_expr
	| UNARY_OP primary_expr

logical_and_expr
	: unary_expr
	| logical_and_expr AND_OP unary_expr

logical_xor_expr
	: logical_and_expr
	| logical_or_expr XOR_OP logical_and_expr

logical_or_expr
	: logical_xor_expr
	| logical_or_expr OR_OP logical_xor_expr

expr_list
	: logical_or_expr
	| expr_list ';' logical_or_expr
	| expr_list ',' logical_or_expr

Access Control Listen werden mit der statischen Methode AccessControlList.parse() eingelesen. Der Parser verwendet wiederum die statische Methode PermissionFactory.parse() um die einzelnen Permissions zu lesen. Der Anwendungsentwickler kann über die PermissionFactory eigene von Permission abgeleitete Klassen registrieren und so den Sprachumfang der ACL erweitern.

 
propertyString Gibt den Namen des Properties an, über welchen auf die Java-Bean zugegriffen werden soll. Dies ist in der Regel nur dann notwendig, wenn die Java-Bean mit einer Struts Formular Bean assoziiert ist.

Anmerkung: Es muss ein gültiger Java Bezeichner angegeben werden.

 
styleString Über dieses Attribut kann direkt ein HTML-style Attribut angegeben werden.

Anmerkung: Siehe HTML Dokumentation für das Attribut style.

 
styleClassString Über dieses Attribut kann direkt ein HTML-class Attribut angegeben werden.

Anmerkung: Siehe HTML Dokumentation für das Attribut class.

 
styleIdString Über dieses Attribut kann direkt ein HTML-id Attribut angegeben werden.

Anmerkung: Siehe HTML Dokumentation für das Attribut id.

 
typeMenuType Gibt den Menütyp und damit die visuelle Erscheinung des Menüs an.
  • main = Für ein horizontales Hauptmenü
  • tools = Für ein horizontales Tools Menü
  • sidebar = Für ein vertikales Menü
 
widthString Setzt die Breite des Kontrollelmentes. Die Breite kann absolut oder prozentual angegeben werden.

Siehe HTML-Dokumentation

 

[ Beispiel ]

Erzeugt ein einfaches horizontales Menü.


<%@ taglib uri="http://www.common-controls.com/cc/tags-menu"  prefix="menu" %>
<%@ taglib uri="http://www.common-controls.com/cc/tags-util"  prefix="util" %>

<util:imagemap name="im_menu">
    <util:imagemapping  rule="logout.sel"    src="images/menu/btnLogout5.gif"/>
    <util:imagemapping  rule="logout.unsel"  src="images/menu/btnLogout1.gif"/>
    <util:imagemapping  rule="logout.dis"    src="images/menu/btnLogout4.gif"/>
    <util:imagemapping  rule="about.sel"     src="images/menu/btnAbout5.gif"/>
    <util:imagemapping  rule="about.unsel"   src="images/menu/btnAbout1.gif"/>
</util:imagemap>

<td nowrapbgcolor="#307987">
    <menu:menu id="admin/tools" type="tools" imagemap="im_menu">
        <menu:menuitem  id="main"    text="Main"    imageref="main"    action="main.do"/>
        <menu:menuitem  id="help"    text="Help"    imageref="help"    action="help.do"/>
        <menu:menuitem  id="logout"  text="Logout"  imageref="logout"  action="logoff.do"/>
        <menu:menuitem  id="about"   text="About"   imageref="about"   action="about.do"  tooltip="about Application"/>
    </menu:menu>
</td>