Die Common-Controls Tag Bibliothek

<menu:menuitem>

Mit dem Tag wird eine Menüeintrag deklariert. Ein Menüeintrag kann selbst wiederum weitere <menu:menuitem>-Tags enthalten.
Das Tag kann nur innehalb von <menu:menu> und <menu:menuitem>-Tags verwendet werden.

Body content: JSP
Tag class: MenuItemTag
 

[ Syntax ]

Standard Syntax
<menu:menuitem
[ action = "String" ]
[ filter = "String" ]
[ id = "String" ]
[ imageref = "String" ]
[ locale = "String" ]
[ menuid = "String" ]
[ onblur = "String" ]
[ onchange = "String" ]
[ onclick = "String" ]
[ oncontextmenu = "String" ]
[ ondblclick = "String" ]
[ onfocus = "String" ]
[ onkeydown = "String" ]
[ onkeypress = "String" ]
[ onkeyup = "String" ]
[ onmousedown = "String" ]
[ onmousemove = "String" ]
[ onmouseout = "String" ]
[ onmouseover = "String" ]
[ onmouseup = "String" ]
[ orientation = "{horizontal | vertical}" ]
[ permission = "ACL" ]
[ shortcut = "String" ]
[ state = "{enabled | disabled | checked | unchecked | visible | invisible | popup}" ]
[ target = "String" ]
[ text = "String" ]
[ tooltip = "String" ]
[ width = "String" ]
>
...Body Content...

</menu:menuitem>
 

[ Attribute ]

AttributTypBeschreibungPflichtRTExp
actionString Gibt die Struts-Action an welche bei der Selektion des Menüpunktes aufgerufen werden soll.  
filterString Legt die optionalen Filterbedingung(en) für diesen Menüpunkt fest. Der Menü Kontextfilter muss mit mindestens einem Filter übereinstimmen, damit der Menüpunkt angezeigt wird.

Anmerkung: Mehrere Filter werden mit ";" getrennt

 
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.

 
imagerefString Verweis auf ein Element der ImageMap des Menüs. Das Image wird anstelle des Menütextes angezeigt.

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

  • .sel = Selektierte Menüeintrag.
  • .dis = Disabled.
  • .unsel = Unselektierter Menüeintrag.
 
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üpunktes fest. Durch Konkatenation der Menü Id's über die Deklarationshierarchie hinweg wird ein Menüpfad gebildet.

Ein Menüpunkt gilt als selektiert, wenn der aktuelle Kontextpfad mit dem Menüpfad beginnt!

Anmerkung: Einzelne Pfadelemente werden mit "/" getrennt

 
onblurString Fires when the object loses the input focus.

Anmerkung: JavaScript Code

 
onchangeString Fires when the contents of the object or selection have changed.

Anmerkung: JavaScript Code

 
onclickString Fires when the user clicks the left mouse button on the object.

Anmerkung: JavaScript Code

 
oncontextmenuString Fires when the user clicks the right mouse button in the client area, opening the context menu.

Anmerkung: JavaScript Code

 
ondblclickString Fires when the user double-clicks the object.

Anmerkung: JavaScript Code

 
onfocusString Fires when the object receives focus.

Anmerkung: JavaScript Code

 
onkeydownString Fires when the user presses a key.

Anmerkung: JavaScript Code

 
onkeypressString Fires when the user presses an alphanumeric key.

Anmerkung: JavaScript Code

 
onkeyupString Fires when the user releases a key.

Anmerkung: JavaScript Code

 
onmousedownString Fires when the user clicks the object with either mouse button.

Anmerkung: JavaScript Code

 
onmousemoveString Fires when the user moves the mouse over the object.

Anmerkung: JavaScript Code

 
onmouseoutString Fires when the user moves the mouse pointer outside the boundaries of the object.

Anmerkung: JavaScript Code

 
onmouseoverString Fires when the user moves the mouse pointer into the object.

Anmerkung: JavaScript Code

 
onmouseupString Fires when the user releases a mouse button while the mouse is over the object.

Anmerkung: JavaScript Code

 
orientationOrientationType Mit diesem Attribut wird die Ausrichtung der geschachtelten Menüeinträge festgelegt.

Wenn dieses Attribut angegeben wird, dann erhält der Menüeintrag implizit den Status "popup"

  • horizontal = Horizontale Ausrichtung (von links nach rechts)
  • vertical = Vertikale Ausrichtung (von oben nach unten)
 
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.

 
shortcutString Ein Tastaturkürzel für den Menüeintrag.  
stateMenuStateType Gibt den Zustand des Menüpunktes an.
  • enabled = Menüpunkt aktiv
  • disabled = Menüpunkt ist inaktiv und nicht selektierbar
  • checked = Menüpunkt ist markiert
  • unchecked = Menüpunkt ist nicht markiert
  • visible = Menüpunkt ist sichtbar
  • invisible = Menüpunkt ist unsichtbar
  • popup = Menüpunkt ist ein Popup Menü
 
targetString Über dieses Attribut kann das HTML-target Attribut des Elementes angegeben werden.

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

 
textString Die eigentliche Beschriftung des Menüpunktes. Diese muss auch dann angegeben werden, wenn ein Image für den Menüpunkt verwendet werden soll.  
tooltipString Ein Kurzer Hinweistext welcher angezeigt wird, wenn der Anwender mit der Maus über das Element fährt.  
widthString Setzt die Breite des Kontrollelmentes. Die Breite kann absolut oder prozentual angegeben werden.

Siehe HTML-Dokumentation

 

[ Beispiel ]

Erzeugt ein hierarchisches Menü


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

<menu:menu  id="admin"  type="sidebar"  width="150">

    <menu:menuitem  id="tools"         text="Tools"                action="sessionbrowse.do">
        <menu:menuitem  id="sessions"  text="Active Sessions"      action="sessionbrowse.do"/>
        <menu:menuitem  id="log"       text="Log Files"            action="logbrowse.do"  permission="#admin"/>
        <menu:menuitem  id="sqlquery"  text="Database Query Tool"  action="query.do"      permission="#admin"/>
        <menu:menuitem  id="shutdown"  text="Shutdown Manager"     action="shutdown.do"   permission="#admin"/>
    </menu:menuitem>

    <menu:menuitem  id="profile"       text="User Profile"         action="userprofile.do">
        <menu:menuitem  id="edit"      text="Edit Profile"         action="userprofile.do"/>
        <menu:menuitem  id="password"  text="Change Password"      action="changepwd.do"/>
    </menu:menuitem>
</menu:menu>