bx:pagedata
Funktionen:
pagedata.parentnavid
<bx:pagedata.parentnavid/>
pagedata.webid
<bx:pagedata.webid/>
<bx:pagedata.customerid/> <!-- veraltet -->
Gibt die ID des Webs (Projekts) aus
pagedata.webdir
<bx:pagedata.webdir/>
<bx:pagedata.customerdir/> <!-- veraltet -->
gibt das virtuelle Verzeichnis des Webs aus.
pagedata.webhost
<bx:pagedata.webhost [addscheme]/>
(Verfügbar ab Version 2.7)
Der beim Projekt eingegebene Haupthost wird ausgegeben. Wenn "addscheme" angegeben ist, wird auch das beim Projekt eingestellte Protokoll ausgegeben. Dies ist bei Canonical-Angaben nützlich, wenn nicht der aktuelle Host (wie bei bx:pagedata.hostname/) gebraucht wird, sondern die Hauptdomain.
pagedata.virtualpath
<bx:pagedata.virtualpath [original]/>
Der virtuelle Pfad des Menüpunktes wird ausgegeben. z.B. von http://www.beispielseite.de/produkte/textiles/pullover/ wird ausgegeben: produkte/textiles/pullover
pagedata.navid
<bx:pagedata.navid [level="{n}"]/> <!-- gibt nur die ID aus -->
<bx:pagedata.navid is="{id}"> Inhalt </bx:pagedata.navid> <!-- Inhalt wird geladen…nur dann ausgegeben, wenn die ID des aktuellen Menüpunktes mit der ID von "is" übereinstimmt" -->
Hauptmenüpunkt entspricht
level="0", Untermenüpunkte liegen jeweils eine Ebene höher is vorgegebene ID NOT funktioniert hier nicht, bitte pagedata.nav verwenden
pagedata.navpath
<bx:pagedata.navpath [previous | next] [active | inactive | all] />
Gibt den virtuellen Pfad des Menüpunktes aus, z.B. von http://www.beispielseite.de/produkte/textiles/pullover/ wird ausgegeben: pullover
next sucht den vorherigen bzw. nächsten Menüpunkt im gleichen Level active
inactive
all nur aktive anzeigen (Standard)
nur inactive anzeigen
alle anzeigen
Beispiele
Beispiel Titel
<div style="float:left;width:100px;">
<a href="<bx:pagedata.navpath previous/>">« vorherige Seite</a>
</div>
<bx:pagedata.navname />
<div style="float:right;width:100px;text-align:right;">
<a href="<bx:pagedata.navpath/>">nächste Seite »</a>
</div>
Ein Blättern zwischen den (aktiven) Menüpunkten einer Ebene. Sieht dann ungefähr so aus:
pagedata.navname
<bx:pagedata.navname [level="{n}"] />
Gib den Name des Menüpunktes oder eines Elternpunktes aus.
Hauptmenüpunkt entspricht
level="0", Untermenüpunkte liegen jeweils eine Ebene höher
pagedata.nav
<bx:pagedata.nav {id="{id}" | parent="{id}" | path="{pfad}"} [not] [original]> Inhalt </bx:pagedata.nav>
Entscheidet, ob Inhalt ausgegeben wird anhand von ID(s) oder Pfad
ab V 2.6.2: es können mehrere ID mit Komma getrennt angegeben werden parent ID des Elternmenüpunktes (findet auch sich selbst als Punkt) ab V 2.7: es können mehrere ID mit Komma getrennt angegeben werden path Pfad des aktuellen Menüpunktes not kehrt die Bedingung um original es wird die Angabe von der ursprünglichen Seite genommen (z.B. bei einem jsp-include )
pagedata.request
Ab V 2.6.3 RC14 wird in den meisten Fällen ein HTML-Encoding gemacht, wo kein encode-Parameter angegeben ist und auch kein bx:tools.htmlencode außen herum ist. Dies verursacht manchmal Probleme:
<bx:pagedata.request name="{param}" [boundary="{text}"] [empty] encode="{ html | javascript | sql | sql-like | sql-rlike | url | xml | plain}"/> <!-- Ausgabe des Request-Parameters -->
<bx:pagedata.request name="{param}" value="<text>" [true="{text}"] [false="{text}"] />
<bx:pagedata.request name="{param}" [not] [empty]> Inhalt </bx:pagedata.request> <!-- Auswertung des Request-Parameters -->
<bx:pagedata.request name="{param}" value="{text}" [not]> Inhalt </bx:pagedata.request>
Request-Parameter auswerten
<bx:pagedata.request ... encode="html|javascript|sql|sql-like|sql-rlike|url|xml">
javascript und url gibt's schon seit v2.3, den Rest ab v2.6.2
kann auch einen Platzhalter in der Form
name="[platz]id"enthalten (siehe Beispiel) encode Codierung des Wertes, für JavaScript-Code (Sonderzeichen werden escaped) oder als URL (%nn)
Hiermit kann der ausgegebene Text für verschiedene Formate kodiert werden:
- html - javascript - sql (zur Verwendung in SQL für Strings) - sql-like (zur Verwendung in SQL mit LIKE) - sql-rlike (zur Verwendung in SQL mit RLIKE und REGEXP) - url - xml - plain (überschreibt automatisches Encoding) - htmltext: siehe Beipspiel (3)
Das erspart ein bx:tools, was ansonsten um das bx:pagedata gepackt werden müsste. boundary Falls der Parameter mehrfach vorkommt (?para=wert1¶=wert2) wird ohne Angabe von
boundarynur der Erste ausgegeben,
andernfalls wird der Wert von
boundaryals Trennzeichen benutzt. not
empty Falls
empty gesetzt ist, wird ein leerer Request-Parameter wie ein nicht vorhander behandelt.| | seite.htm | seite.htm?p= | seite.htm?p=wert | | --- | --- | --- | --- | |
<bx:pagedata.request name="p">... | leer | angezeigt | angezeigt | | <bx:pagedata.request name="p" not>... | angezeigt | leer | leer | | <bx:pagedata.request name="p" empty>... | leer | leer | angezeigt | | <bx:pagedata.request name="p" not empty>... | angezeigt | angezeigt | leer |
seite.htm
<bx:pagedata.request name="p">...
leer
<bx:pagedata.request name="p" not>...
angezeigt
<bx:pagedata.request name="p" empty>...
leer
<bx:pagedata.request name="p" not empty>...
angezeigt
value
Text, den der Request-Parameter enthalten soll
truefalse Wenn der Wert des Parameters mit
value verglichen wird kann entweder true (wird ausgegeben, wenn gleich) und/oder false (wird ausgegeben, wenn ungleich) verwendet werden oder man setzt den Inhalt, welcher dann bei Übereinstimmung ausgegeben wird (umkehrbar durch not).ab v2.6.6: es kann auch abgefragt werden, ob der Parameter übergeben wurde oder nicht (siehe Beispiel)
Beispiele
Fall 1 true/false
Beispiel Titel
<bx:pagedata.request name=“test“ value=“3“ true=”ist drei” false=”ist nicht drei” />
Fall 2 true/false
Beispiel Titel
<bx:pagedata.request name=“test“ true=”test ist übergeben” false=”test ist nicht übergeben” />
es wird nicht der Wert abgefragt, sondern ob überhaupt der Parameter übergeben wurde
Beispiel Titel
<bx:pagedata.request name=“test“ encode=”htmltext”/>
Eingabe: test.htm?test=erste+Zeile%0azweite+Zeile («%0a» ist ein Zeilenumbruch) → schreibt «erste Zeile
zweite Zeile» und damit sieht man einen Zeilenumbruch im Browser
pagedata.attribute
Beispiele
Beispiel Titel
speichern.act?feld=[]/Name[containerID]&containerID=12345
Bissl weit hergeholtes Beispiel: ... ich hab keine Ahnung!
Beispiel Titel
speichern.act?feld=[]/Name[containerID]&containerID=12345
Beispiel Titel
test.htm?test=erste+Zeile%0azweite+Zeile // "%0a" ist ein Zeilenumbruch
<bx:pagedata.request name="test" encode="htmltext"/> // schreibt erste Zeile<br>zweite Zeile und damit sieht man einen Zeilenumbruch im Browser
<bx:pagedata.attribute name="{attrib}" /> <!-- schreibt den Wert des Attributes (falls vorhanden) in die Seite -->
<bx:pagedata.attribute name="{attrib}" [not]> Inhalt </bx:pagedata.attribute> <!-- gibt den Tag-Inhalt aus, wenn das Attribut vorhanden ist -->
<bx:pagedata.attribute name="{attrib}" value="{text}" [not]> Inhalt </bx:pagedata.attribute> <!-- vergleicht den Wert des Attributes mit dem Wert von value und gibt den Tag-Inhalt bei Übereinstimmung aus -->
Ein Request-Attribute, das z.B. durch JSP-Includes oder das bx:setattribute gesetzt wurde, kann ausgewertet werden.
not)
pagedata.setattribute
<bx:pagedata.setattribute mode="[copy | set | remove]" name="{name}"> Inhalt </bx:pagedata.setattribute>
Ein Request-Attributekann gesetzt, geändert oder gelöscht werden.
copy: Zeigt den Taginhalt in der Seite an und kopiert ihn in das Request-Attribut set: Kopiert den Inhalt in das Request-Attribut aber zeigt ihn nicht in der Seite an remove: löscht das Request-Attribut (das Tag wird geschlossen verwendet)
pagedata.scriptattribute
<bx:pagedata.scriptattribute name="{attrib}" /> <!-- gibt den Wert des Script-Attributes (falls vorhanden) aus -->
<bx:pagedata.scriptattribute name="{attrib}" [not]> Inhalt </bx:pagedata.scriptattribute> <!-- gibt den Tag-Inhalt aus, wenn das Script-Attribut vorhanden ist -->
<bx:pagedata.scriptattribute name="{attrib}" value="{text}" [not]> Inhalt </bx:pagedata.scriptattribute> <!-- vergleicht den Wert des Script-Attributes mit dem Wert von value und gibt den Tag-Inhalt bei Übereinstimmung aus -->
Ein Script-Attribut, das z.B. durch Actions gesetzt wurde, kann ausgewertet werden.
not)
pagedata.setscriptattribute
<bx:pagedata.setscriptattribute mode="[copy | set | remove]" name="{name}" [trim]> Inhalt </bx:pagedata.setscriptattribute>
Ein Script-Attribut kann gesetzt, geändert oder gelöscht werden.
copy: Gibt den Taginhalt aus und kopiert ihn in das Script-Attribut set: Kopiert den Taginhalt in das Script-Attribut aber zeigt ihn nicht an remove: löscht das Script-Attribut (das Tag wird geschlossen verwendet)
pagedata.listrequest
<bx:pagedata.listrequest/>
alle Request-Parameter werden als 'hidden' Formularfeld in die Seite geschrieben
pagedata.querystring
<bx:pagedata.querystring [original]/>
QueryString ausgeben
Ein '?' am Anfang ist in der Ausgabe nicht enthalten. GePOSTete Parameter sind nicht enthalten! Falls dieses Tag im HTML-Quelltext (z.b. für Links) verwendet wird, muss die Ausgabe noch durch bx:tool.urlencode umgewandelt werden.
pagedata.meta
<bx:pagedata.meta name="<meta>" /> <!-- schreibt den Wert der Meta-Eigenschaft (falls vorhanden) in die Seite -->
<bx:pagedata.meta name="<meta>" [not]> Inhalt </bx:pagedata.meta> <!-- gibt den Tag-Inhalt aus, wenn die Meta-Eigenschaft vorhanden ist -->
<bx:pagedata.meta name="<meta>" value="<text>" [not]> Inhalt </bx:pagedata.meta> <!-- vergleicht den Wert der Eigenschaft mit dem Wert von value und gibt den Tag-Inhalt bei Übereinstimmung aus -->
Metadaten auswerten
not)
pagedata.cookie
<bx:pagedata.cookie name="{cookie}" /> <!-- schreibt den Wert des Cookies (falls vorhanden) in die Seite -->
<bx:pagedata.cookie name="{cookie}" [not]> Inhalt </bx:pagedata.cookie> <!-- gibt den Tag-Inhalt aus, wenn der Cookie vorhanden ist -->
<bx:pagedata.cookie name="{cookie}" value="{text}" [not]> Inhalt </bx:pagedata.cookie> <!-- vergleicht den Wert des Cookies mit dem Wert von value und gibt den Tag-Inhalt bei Übereinstimmung aus -->
Wertet vom Browser übergebene Cookies aus.
not)
pagedata.hostname
<bx:pagedata.hostname [addscheme] /> <!-- gibt den Hostnamen des Servers aus (wenn Port != 80 Ausgabe = hostname:port -->
<bx:pagedata.hostname match="{regex}" [addscheme] [not]> Inhalt </bx:pagedata.hostname> <!-- vergleich des Hostnames mit einem regulären Ausdruck (ab v2.5.5)-->
Der Hostname (und evtl. Port) der aktuellen Anfrage wird ausgegeben.
https://)
des aktuellen Seitenaufrufs aus
Beispiele
Wenn man im Web von batix. com folgende Tags einbindet:
Beispiel Titel
<bx:pagedata.hostname/>
wir ausgegeben: www.batix.com
Beispiel Titel
<bx:pagedata.hostname addscheme/>
wird ausgegeben: http://www.batix.com (ab v2.5.8)
Beispiel Titel
<bx:pagedata.hostname match=".*\.[com|net]"> Sie haben unsere net- oder com-Domain aufgerufen.</bx:pagedata.hostname>
beim Aufruf von www.batix.de oder www.batix.eu wird der Text nicht ausgegeben, beim Aufruf von www.batix.com oder www.batix.net schon.
pagedata.sessionid
<bx:pagedata.sessionid/>
Die Session-ID wird ausgegeben. Wenn es noch keine Session gibt, dann wird eine erstellt und dann ausgegeben, außer man gibt "no-create" an* (ab V 2.6.9)*
pagedata.sessionurl
<bx:pagedata.sessionurl/>
Session-URL-Komponente (;jsessionid=) ausgeben, falls Cookies ausgeschaltet sind
pagedata.url
<bx:pagedata.url [encode="html"] />
Dieser Befehl schreibt die komplette Request-URL inklusive Query-String in die Seite.
Falls encode="html" angegeben ist, werden <, >, ", & und ' durch ihre HTML-Umschreibungen ersetzt.
pagedata.filename
<bx:pagedata.filename [original]/> <!-- der Dateiname wird ausgegeben (z. B. "index.htm") -->
<bx:pagedata.filename equals="{vergleichsname}" [not] [original]> ... </bx:pagedata.filename> <!-- Taginhalt wird nur ausgeführt, wenn der aktuelle Dateiname dem angegebenen Namen entspricht (ab v2.5.7) -->
Gibt den virtuellen Dateinamen aus der gerade aufgerufenen URL zurück. Wenn die Seite mit "/" aufgerufen wird, behandelt das Tag den Namen als "index.htm".
pagedata.errortext
<bx:pagedata.errortext/>
Fehlertext in eine Fehlerseite schreiben. Der Befehl ist nur in der Fehlerseite "/www/[host-dir]/errorpage/index.htm" verfügbar. (ab* v2.3.15)*
pagedata.errorstacktrace
<bx:pagedata.errorstacktrace/>
Schreibt den Stacktrace einer Exception in die Fehlerseite. Der Befehl ist nur in der Fehlerseite "/www/[host-dir]/errorpage/index.htm" verfügbar. seit v2.5.8
pagedata.remoteip
<bx:pagedata.remoteip/> <!-- schreibt die IP-Adresse des Clients (der die Abfrage macht) in die Seite. (z. B. um sie in einen Container zu speichern) -->
<bx:pagedata.remoteip equals="{testip}" [not]> Inhalt </bx:pagedata.remoteip> <!-- Vergleich der IP und entsprechende Ausgabe des Tag-Inhalts -->
<bx:pagedata.remoteip host="{hostname}" [not]> Inhalt </bx:pagedata.remoteip>
<bx:pagedata.remoteip matches="{regex}" [not]> Inhalt </bx:pagedata.remoteip>
(ab v2.5.7)
Beispiele
Beispiel Titel
<bx:pagedata.remoteip matches="123\.210\.12\.[0-9]+">
<a href="...">Intranet</a>
</bx:pagedata.remoteip>
Inhalt nur für IP-Adressen im Bereich "123.210.12.*" zeigen
pagedata.scheme
<bx:pagedata.scheme/>
Gibt das Protokoll zurück. ("http" oder "https") (ab* v2.5.8*)
pagedata.compressed
<bx:pagedata.compressed /> <!-- es wird ".bxmin" ausgegeben* -->
<bx:pagedata.compressed>.bxmin</bx:pagedata.compressed> <!-- der Inhalt des Body (im Beispiel ebenfalls ".bxmin")wird ausgegeben, ansonsten wird keine Ausgabe gemacht* -->
Unterscheidet abhängig vom Projektstatus die Einstellung der Scriptkomprimierung (ab* v2.6.2*). *Greift, wenn das Projekt auf Produktiv und "Style- und Script-Compressor" im Projekt angehakt ist.
pagedata.status
<bx:pagedata.status type="{dev | prod | debug}"> ... </bx:pagedata.status>
Zeigt abhängig vom Projektstatus den Taginhalt an (ab* v2.6.2*).
Beispiele
Beispiel Titel
<script src="tools<bx:pagedata.status type="prod">.bxmin</bx:pagedata.status>.js"></script>
Wenn das System auf "Produktiv" gestellt ist, wird tools.bxmin.js ausgegeben, sonst tools.js
pagedata.charset
<bx:pagedata.charset />
Gibt den Zeichensatz aus, der beim Projekt bzw. beim Design angegeben wurde. Wenn bei beiden nichts angegeben wurde, wird nichts ausgegeben und es gilt der Standard der Servlet-API (iso-8859-1)
pagedata.writecontenttype
<bx:pagedata.writecontenttype/>
Gibt folgendes aus: <meta http-equiv="Content-Type" content="[mimetype]; charset=[Zeichensatz]> Bisher wird es immer von Hand reingeschrieben und bei Änderung des Seiteneincodngs passen die Zeichensätze nicht mehr zusammen.
pagedata.header
<bx:pagedata.header name="..." (value|matches|contains)="[Vergleichswert]" [not]>
Beispiele
Beispiel Titel
<a href="<bx:pagedata.header name="Referer"/>">zurück</a>
<bx:pagedata.header name="Referer" not>Direkt eingetippt</bx:pagedata.header>
<bx:pagedata.header name="accept-language" contains="es">¡hola!</bx:pagedata.header>
<bx:pagedata.header name="User-Agent" matches=".*(google|bing|yahoo).*">Hallo Suchmaschine!</bx:pagedata.header>
Verweise auf diese Seite:
(8 Verweise)