Die Common-Controls Tag Bibliothek

<ctrl:columnheader>

Erzeugt ein Header Element für die umschliessende Spalte.

Der Anwendungsentwickler erhält damit die volle Kontrolle über den generierten HTML Code des Spaltenkopfes.

Intern wird das Design des Spaltenkopfes immer in einem Objekt vom Typ ColumnHeaderDesignModel verwaltet, welches von der jeweiligen Spalte implizit angelegt wird. Das Spalten Tag bietet jedoch nur einen begrenzten Zugriff auf die Attribute des Spaltenkopfes. Mit dem <columnheader>-Tag können hingegen alle Attribute bis hin zum eigenen HTML Code gesetzt werden.

RolleJava Klasse
DesignmodelColumnHeaderDesignModel
Das <columnheader>-Tag darf nur innerhalb von einem Taghandler welcher von ColumnBaseTag abgeleitet ist verwendet werden.

Body content: JSP
Tag class: ColumnHeaderTag
 

[ Syntax ]

Standard Syntax
<ctrl:columnheader
[ ajax = "Boolean" ]
[ align = "{left | right | center}" ]
[ filter = "Boolean" ]
[ imagemap = "String" ]
[ imageref = "String" ]
[ maxlength = "Integer" ]
[ 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" ]
[ style = "String" ]
[ styleClass = "String" ]
[ styleId = "String" ]
[ title = "String" ]
[ tooltip = "String" ]
[ transaction = "Boolean" ]
>
...Body Content...

</ctrl:columnheader>
 

[ Attribute ]

AttributTypBeschreibungPflichtRTExp
ajaxBoolean Aktiviert die AJAX Funktion der Spalte. Alle Ereignisse werden dann mit JavaScript asynchron an den Server gesendet und dort verarbeitet.

Die Verarbeitung auf dem Server unterscheidet sich nicht von einer normalen Request Behandlung. Der Anwendungsentwickler hat jedoch die Möglichkeit über die Methoden des AjaxRequest Interfaces (Basisklasse von ActionContext) die Ergebnis Rückmeldung zu steuern.

Im Normalfall (-> AjaxRequest.isAjaxCanceled() == false) wird ein Delta XML Stream zum Web Browser zurückgeschickt. Dieser Stream enthält nur die schmutzigen Kontrollelemente, welche dann mit Hilfe eines JavaScript Handlers vom Web Browser im HTML DOM Tree selektiv ausgetauscht werden. Es wird also keine vollständige HTML Seite vom Server übertragen!

  • (+) Die übertragene Datenmenge ist kleiner.
  • (+) Die HTML Seite bleibt im Browser stehen und es gibt kein "flackern".
  • (-) Der Request wird nicht in der Browser Historie vermerkt!
  • (-) Es wird JavaScript benötigt, sonst wird ein normaler Server roundtrip ausgelößt

Die meisten Kontrollelemente fügen sich selbst in die Dirty Liste des ActionContext ein. Hierzu wird einfach die Methode AjaxRequest.markDirty() aufgerufen. Der Anwendungsentwickler hat damit die Möglichkeit noch weitere Kontrollelemente - die durch eine Zustandsänderung ebenfalls schmutzig geworden sind - in den Delta Stream aufzunehmen

Wenn der Request eine vollständig neue HTML Seite zurückgeben soll, dann besteht auch die Möglichkeit die AJAX Verarbeitung auf dem Server abzubrechen. Hierzu wird die Methode AjaxRequest.cancelAjaxRequest() aufgerufen. Das Framework sendet danach immer eine vollständige HTML Seite zurück an den Web Browser.

Das Common-Controls AJAX XML Protokoll hat das folgende Format:


<?xml version="1.0" encoding="UTF-8" ?>
<ajax-response>
	<token/>
	<controls>
		<control styleId="" class="" name="">
			<html>
				<[CDATA[...]] >
			</html>
		</control>
	</controls>
</ajax-response>

				
 
alignAlignmentType Gibt die Ausrichtung der Spalte an.
  • left = linksbündige Ausrichtung
  • right = rechtsbündige Ausrichtung
  • center = zentrierte Ausrichtung
 
filterBoolean Mit dem filter-Attribut kann die automatische HTML-Codierung des Spalteninhaltes aktiviert bzw. deaktiviert werden.
  • true = Die HTML Konvertierung ist aktiv. So wird beispielsweise das "<" Zeichen als "&lt;" codiert. HTML Code wird damit nicht ausgeführt.
  • false = Die HTML Konvertierung ist abgeschaltet. HTML Code wird demzufolge direkt in die Seite eingesetzt und somit ausgeführt.
 
imagemapString Gibt den Namen einer ImageMap an, welche im Request abgelegt sein muss. Die Werte welche das imageProperty liefert werden auf die Einträge dieser ImageMap abgebildet. Die Abbildung erfolgt anhand des regulären Ausdrucks welcher jedem Eintrag der ImageMap zugeordnet ist.

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

 
imagerefString Verweis auf ein Element der ImageMap des Headers. Das Image wird vor dem Label des Headers gezeichnet.

Die ImageMap wird mit Hilfe des imagemap Attributes gesetzt

 
maxlengthInteger Gibt die maximale Zeichenzahl für die Anzeige in Spaltenüberschriften und Zellen an. Weitere Zeichen werden durch "..." angedeutet.
Diese Funktionalität ist unwirksam, wenn das Attribut filter="false" gesetzt ist, da in diesem Fall die tatsächlich sichtbare Zeichenzahl nicht ermittelt werden kann.
 
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

 
styleString Über dieses Attribut kann direkt ein HTML-style Attribut für die Zellen der Spalte angegeben werden.

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

 
styleClassString Über dieses Attribut kann direkt ein HTML-class Attribut für die Zellen der Spalte angegeben werden.

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

 
styleIdString Über dieses Attribut kann direkt ein HTML-id Attribut für die Zellen der Spalte angegeben werden.

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

 
titleString Gibt die Spaltenüberschrift an.

Die Zeichenkette wird vor der Ausgabe HTML-codiert.

 
tooltipString Gibt den Tooltip Text an

Anmerkung: lokalisierbare Zeichenkettenkonstante

 
transactionBoolean Mit diesem Flag wird angegeben ob ein Transaction Token (siehe Struts Token Dokumentation) an alle Hyperlinks der Spalte angehängt werden soll.

Mit dem Transaction Token können Form Re-submissions (mehrfaches Absenden eines HTML Formulars) erkannt werden.

Funktionsweise: Das Transaction Token is ein "Stempel" mit welchem die Applikation jede generierte HTML Seite stempelt (es wird ein hidden Field bzw. zusätzliche URL Parameter für alle Hyperlinks erzeugt). Bei einem Server Request kann der vom Browser zurückgeliefert Stempel mit dem in der Session gespeicherten Wert verglichen werden. Wenn der Wert übereinstimmt, dann passt die Seite zum aktuellen Applikations Zustand.
Stimmt der Stempel nicht überein, dann sind Applikationszustand und Browser Inhalt asynchron und die Applikation kann auf diesen Fehler - wie auch immer - reagieren. Eine Abweichung entsteht immer dann, wenn der Anwender eine ältere Seite aus der Browser Historie absendet.

 

[ Beispiel ]

Erzeugt ein List Control mit einer Drilldown Spalte. Die Spaltenüberschrift wird mit dem <columnheader>-Tag gesetzt.


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

<ctrl:list
   action="personBrowse"
   name="persons"
   title="Person List"
   rows="15">


   <ctrl:columndrilldown  title="Person"  property="id"  width="70">
      <ctrl:columnheader tooltip="this is the person column"/>
   </ctrl:columndrilldown>
</ctrl:list>