Die Tag-Bibliotheken von Granite, CQ und Sling verleihen Ihnen Zugriff auf spezifische Funktionen für die Verwendung im JSP-Skript der Vorlagen und Komponenten.
Die Tag-Bibliothek von Granite enthält hilfreiche Funktionen.
Bei der Entwicklung des JSP-Skripts einer Granite-UI-Komponente empfiehlt es sich, den folgenden Code oben im Skript einzufügen:
<%@include file="/libs/granite/ui/global.jsp"%>
Das globale Objekt deklariert zudem die Sling-Bibliothek.
<%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling" %>
Die <ui:includeClientLib>
tag Enthält eine AEM HTML-Client-Bibliothek, bei der es sich um eine JS-, CSS- oder Design-Bibliothek handeln kann. Für mehrere Einschlüsse verschiedener Typen, z. B. js und css, muss dieses Tag mehrmals in der JSP verwendet werden. Dieses Tag ist ein praktischer Wrapper für die Dienstschnittstelle [com.adobe.granite.ui.clientlibs.HtmlLibraryManager](https://helpx.adobe.com/experience-manager/6-4/sites/developing/using/reference-materials/javadoc/com/adobe/granite/ui/clientlibs/HtmlLibraryManager.html)
.
Es weist folgende Attribute auf:
categories - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies bezieht alle Javascript-Dateien und CSS-Bibliotheken für die betreffenden Kategorien mit ein. Der Designname wird aus der Abfrage extrahiert.
Entspricht: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeIncludes
Design - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies beinhaltet alle designbezogenen Bibliotheken (CSS und JS) für die entsprechenden Kategorien. Der Designname wird aus der Abfrage extrahiert.
Entspricht: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeThemeInclude
js - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies bezieht alle Javascript-Bibliotheken für die betreffenden Kategorien mit ein.
Entspricht: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeJsInclude
css - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies bezieht alle CSS-Bibliotheken für die betreffenden Kategorien mit ein.
Entspricht: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeCssInclude
themed - Eine Markierung, die anzeigt, dass nur thematische oder nicht thematische Bibliotheken eingeschlossen werden sollen. Wenn ausgelassen, sind beide Sätze enthalten. Gilt nur, wenn nur JS oder nur CSS enthalten ist (nicht wenn Kategorien oder Designs enthalten sind).
Die <ui:includeClientLib>
-Tag kann wie folgt in einer JSP verwendet werden:
<%-- all: js + theme (theme-js + css) --%>
<ui:includeClientLib categories="cq.wcm.edit" />
<%-- only js libs --%>
<ui:includeClientLib js="cq.collab.calendar, cq.security" />
<%-- theme only (theme-js + css) --%>
<ui:includeClientLib theme="cq.collab.calendar, cq.security" />
<%-- css only --%>
<ui:includeClientLib css="cq.collab.calendar, cq.security" />
Die Tag-Bibliothek von CQ enthält hilfreiche Funktionen.
Das Skript muss mit dem folgenden Code beginnen, damit Sie die Tag-Bibliothek von CQ im Skript verwenden können:
<%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %>
Wenn die /libs/foundation/global.jsp
im Skript enthalten ist, wird die Tag-Bibliothek automatisch deklariert.
Wenn Sie das JSP-Skript einer AEM-Komponente entwickeln, sollten Sie folgenden Code am Anfang des Skripts einfügen:
<%@include file="/libs/foundation/global.jsp"%>
Sie deklariert die Sling-, CQ- und JSTL-Taglibs und stellt die regelmäßig verwendeten Skriptobjekte bereit, die von der <cq:defineObjects />
-Tag. Dies verkürzt und vereinfacht den JSP-Code der Komponente.
Die <cq:text>
-Tag ist ein praktisches Tag, das Komponententext in einer JSP ausgibt.
Es weist die folgenden optionalen Attribute auf:
property - Name der zu verwendenden Eigenschaft. Der Name steht im Bezug zur aktuellen Ressource.
value - Für die Ausgabe zu verwendender Wert. Falls dieses Attribut vorhanden ist, wird die Nutzung des Attributs property außer Kraft gesetzt.
oldValue - Wert, der für die Vergleichsausgabe verwendet werden soll. Falls dieses Attribut vorhanden ist, wird die Nutzung des Attributs property außer Kraft gesetzt.
escapeXml - Definiert, ob die Zeichen <, >, &, ' und " in der resultierenden Zeichenfolge in die entsprechenden Zeichenentitätscodes konvertiert werden sollen. Der Standardwert lautet false. Beachten Sie, dass der Escapevorgang nach der optionalen Formatierung angewendet wird.
format - Optionales java.text.Format zur Formatierung des Texts.
noDiff - Unterdrückt die Berechnung einer diff-Ausgabe, auch wenn eine diff -Information vorhanden ist.
tagClass - CSS-Klassenname eines Elements, das eine nicht leere Ausgabe umgibt. Wenn leer, wird kein Element hinzugefügt.
tagName - Name des Elements, das eine nicht leere Ausgabe umgibt. Standardmäßig ist DIV eingestellt.
Platzhalter - Standardwert, der für null oder leeren Text im Bearbeitungsmodus, d. h. den Platzhalter, verwendet wird. Beachten Sie, dass nach der optionalen Formatierung und dem Escapevorgang die standardmäßige Prüfung ausgeführt wird, d. h. er wird im vorliegenden Format in die Ausgabe geschrieben. Standardwert ist:
<div><span class="cq-text-placeholder">¶</span></div>
default - Standardwert für null oder leeren Text. Beachten Sie, dass nach der optionalen Formatierung und dem Escapevorgang die standardmäßige Prüfung ausgeführt wird, d. h. er wird im vorliegenden Format in die Ausgabe geschrieben.
Einige Beispiele zeigen, wie die <cq:text>
-Tag kann in einer JSP verwendet werden:
<cq:text property="jcr:title" tagName="h2"/>
<cq:text property="jcr:description" tagName="p"/>
<cq:text value="<%= listItem.getTitle() %>" tagName="h4" placeholder="" />
<cq:text value="<%= listItem.getDescription() %>" tagName="p" placeholder=""/>
<cq:text property="jcr:title" value="<%= title %>" tagName="h3"/><%
} else if (type.equals("link")) {
%><cq:text property="jcr:title" value="<%= "\u00bb " + title %>" tagName="p" tagClass="link"/><%
} else if (type.equals("extralarge")) {
%><cq:text property="jcr:title" value="<%= title %>" tagName="h1"/><%
} else {
%><cq:text property="jcr:title" value="<%= title %>" tagName="h2"/><%
<cq:text property="jcr:description" placeholder="" tagName="small"/>
<cq:text property="tableData"
escapeXml="false"
placeholder="<img src=\"/libs/cq/ui/resources/0.gif\" class=\"cq-table-placeholder\" alt=\"\">"
/>
<cq:text property="text"/>
<cq:text property="image/jcr:description" placeholder="" tagName="small"/>
<cq:text property="text" tagClass="text"/>
Die <cq:setContentBundle>
-Tag erstellt einen i18n-Lokalisierungskontext und speichert ihn im javax.servlet.jsp.jstl.fmt.localizationContext
Konfigurationsvariable.
Es weist folgende Attribute auf:
language - Die Sprache des Gebietsschemas, für das das Ressourcen-Bundle abgerufen werden soll.
source - Die Quelle, aus der das Gebietsschema entnommen werden soll. Sie können sie auf einen der folgenden Werte einstellen:
statisch - das Gebietsschema aus dem language
-Attribut, falls verfügbar, andernfalls über das Standardgebietsschema des Servers.
page - das Gebietsschema wird aus der Sprache der aktuellen Seite oder Ressource übernommen, sofern verfügbar, andernfalls aus dem language
-Attribut, falls verfügbar, andernfalls über das Standardgebietsschema des Servers.
Anfrage - Das Gebietsschema wird aus dem Gebietsschema der Anforderung übernommen ( request.getLocale()
).
auto - das Gebietsschema aus dem language
Attribut , falls verfügbar, andernfalls aus der Sprache der aktuellen Seite oder Ressource, falls verfügbar, aus der Anforderung.
Falls das source
-Attribut nicht festgelegt ist:
Wenn die Variable language
festgelegt ist, wird die source
-Attribut standardmäßig auf " static
.
Wenn die Variable language
nicht festgelegt ist, wird die source
-Attribut standardmäßig auto
.
Das "Inhaltspaket"kann einfach von Standard-JSTL verwendet werden <fmt:message>
Tags. Die Suche von Nachrichten anhand von Schlüsselwörtern hat zwei Aspekte:
SlingHttpServletRequest.getResourceBundle(Locale)
) )) geladen. Die Sprache oder das Gebietsschema für dieses Bundle wird durch die Sprach- und Quellattribute der <cq:setContentBundle>
-Tag.Die <cq:setContentBundle>
-Tag kann wie folgt in einer JSP verwendet werden.
Für Seiten, die ihre Sprache definieren:
... %><cq:setContentBundle source="page"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
Für von Benutzern personalisierte Seiten:
... %><cq:setContentBundle scope="request"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
Die <cq:include>
-Tag eine Ressource in die aktuelle Seite ein.
Es weist folgende Attribute auf:
flush
path
resourceType
script
ignoreComponentHierarchy
Beispiel:
<%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %><%
%><div class="center">
<cq:include path="trail" resourceType="foundation/components/breadcrumb" />
<cq:include path="title" resourceType="foundation/components/title" />
<cq:include script="redirect.jsp"/>
<cq:include path="par" resourceType="foundation/components/parsys" />
</div>
Sollten Sie <%@ include file="myScript.jsp" %>
oder <cq:include script="myScript.jsp" %>
um ein Skript einzubeziehen?
<%@ include file="myScript.jsp" %>
weist den JSP-Compiler an, eine vollständige Datei in die aktuelle Datei aufzunehmen. Es ist, als ob die Inhalte der enthaltenen Datei direkt in die Originaldatei eingefügt würden.<cq:include script="myScript.jsp">
-Tag, wird die Datei zur Laufzeit eingeschlossen.Sollten Sie <cq:include>
oder <sling:include>
?
<cq:include>
.<cq:include>
ermöglicht das direkte Einfügen von Skriptdateien anhand ihres Namens, wenn Sie das script-Attribut verwenden. Dabei werden Komponenten- und Ressourcentypvererbung berücksichtigt. Diese ist häufig einfacher als die strikte Einhaltung der Skriptauflösung von Sling mithilfe von Selektoren und Erweiterungen.<cq:includeClientLib>
ist seit AEM 5.6 veraltet. <ui:includeClientLib>
verwendet werden.
Die <cq:includeClientLib>
tag Enthält eine AEM HTML-Client-Bibliothek, bei der es sich um eine JS-, CSS- oder Design-Bibliothek handeln kann. Für mehrere Einschlüsse verschiedener Typen, z. B. js und css, muss dieses Tag mehrmals in der JSP verwendet werden. Dieses Tag ist ein praktischer Wrapper für die Dienstschnittstelle com.day.cq.widget.HtmlLibraryManager
.
Es weist folgende Attribute auf:
categories - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies bezieht alle Javascript-Dateien und CSS-Bibliotheken für die betreffenden Kategorien mit ein. Der Designname wird aus der Abfrage extrahiert.
Entspricht: com.day.cq.widget.HtmlLibraryManager#writeIncludes
Design - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies beinhaltet alle designbezogenen Bibliotheken (CSS und JS) für die entsprechenden Kategorien. Der Designname wird aus der Abfrage extrahiert.
Entspricht: com.day.cq.widget.HtmlLibraryManager#
writeThemeInclude
js - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies bezieht alle Javascript-Bibliotheken für die betreffenden Kategorien mit ein.
Entspricht: com.day.cq.widget.HtmlLibraryManager#writeJsInclude
css - Eine Liste mit kommagetrennten Client-Bibliothekskategorien. Dies bezieht alle CSS-Bibliotheken für die betreffenden Kategorien mit ein.
Entspricht: com.day.cq.widget.HtmlLibraryManager#writeCssInclude
themed - Eine Markierung, die anzeigt, dass nur thematische oder nicht thematische Bibliotheken eingeschlossen werden sollen. Wenn ausgelassen, sind beide Sätze enthalten. Gilt nur, wenn nur JS oder nur CSS enthalten ist (nicht wenn Kategorien oder Designs enthalten sind).
Die <cq:includeClientLib>
-Tag kann wie folgt in einer JSP verwendet werden:
<%-- all: js + theme (theme-js + css) --%>
<cq:includeClientLib categories="cq.wcm.edit" />
<%-- only js libs --%>
<cq:includeClientLib js="cq.collab.calendar, cq.security" />
<%-- theme only (theme-js + css) --%>
<cq:includeClientLib theme="cq.collab.calendar, cq.security" />
<%-- css only --%>
<cq:includeClientLib css="cq.collab.calendar, cq.security" />
Die <cq:defineObjects>
-Tag stellt die folgenden, regelmäßig verwendeten Skriptobjekte bereit, auf die der Entwickler verweisen kann. Außerdem werden die Objekte bereitgestellt, die durch die <sling:defineObjects>
-Tag.
componentContext
component
currentDesign
currentPage
currentStyle
designer
editContext
pageManager
pageProperties
Eigenschaften
resourceDesign
resourcePage
requestName
responseName
resourceName
nodeName
logName
resourceResolverName
slingName
componentContextName
editContextName
propertiesName
pageManagerName
currentPageName
resourcePageName
pagePropertiesName
componentName
designerName
currentDesignName
resourceDesignName
currentStyleName
Beispiel
<%@page session="false" contentType="text/html; charset=utf-8" %><%
%><%@ page import="com.day.cq.wcm.api.WCMMode" %><%
%><%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %><%
%><cq:defineObjects/>
Wenn die /libs/foundation/global.jsp
im Skript enthalten ist, wird die <cq:defineObjects />
-Tag automatisch eingeschlossen.
Die <cq:requestURL>
-Tag schreibt die aktuelle Anfrage-URL in den JspWriter. Die beiden Tags <cq:addParam>
und <cq:removeParam>
und kann innerhalb des Hauptteils dieses Tags verwendet werden, um die aktuelle Anfrage-URL zu ändern, bevor sie geschrieben wird.
Sie können Links zur aktuellen Seite mit variierenden Parametern erstellen. Beispielsweise können Sie die Anforderung umwandeln:
mypage.html?mode=view&query=something
in mypage.html?query=something
.
Die Verwendung von addParam
oder removeParam
nur das Vorkommen des angegebenen Parameters ändert, sind alle anderen Parameter nicht betroffen.
<cq:requestURL>
hat kein -Attribut.
Beispiele:
<a href="<cq:requestURL><cq:removeParam name="language"/></cq:requestURL>">remove filter</a>
<a title="filter results" href="<cq:requestURL><cq:addParam name="language" value="${bucket.value}"/></cq:requestURL>">${label} (${bucket.count})</a>
Die <cq:addParam>
-Tag fügt einen Anforderungsparameter mit dem angegebenen Namen und Wert zum einschließenden <cq:requestURL>
-Tag.
Es weist folgende Attribute auf:
name
Wert
Beispiel:
<a title="filter results" href="<cq:requestURL><cq:addParam name="language" value="${bucket.value}"/></cq:requestURL>">${label} (${bucket.count})</a>
Die <cq:removeParam>
-Tag entfernt einen Anforderungsparameter mit dem angegebenen Namen und Wert aus dem einschließenden <cq:requestURL>
-Tag. Wenn kein Wert angegeben wird, werden alle Parameter mit dem jeweiligen Namen entfernt.
Es weist folgende Attribute auf:
name
Beispiel:
<a href="<cq:requestURL><cq:removeParam name="language"/></cq:requestURL>">remove filter</a>
Die Tag-Bibliothek von Sling enthält hilfreiche Sling-Funktionen.
Wenn Sie die Tag-Bibliothek von Sling in Ihrem Skript verwenden, muss das Skript mit dem folgenden Code beginnen:
<%@ taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling/1.0" %>
Wenn die /libs/foundation/global.jsp
im Skript enthalten ist, wird die Sling-Tag-Bibliothek automatisch deklariert.
Die <sling:include>
-Tag eine Ressource in die aktuelle Seite ein.
Es weist folgende Attribute auf:
flush
resource
path
resourceType
replaceSelectors
addSelectors
replaceSuffix
Die Auflösung der Ressource und des Skripts, die im <sling:include>
-Tag entspricht der normalen Sling-URL-Auflösung. Standardmäßig werden die Selektoren, die Erweiterung usw. der aktuellen Anforderung auch für das enthaltene Skript verwendet. Sie können über die Tag-Attribute geändert werden: Beispiel replaceSelectors="foo.bar"
ermöglicht es Ihnen, die Selektoren zu überschreiben.
Beispiele:
<div class="item"><sling:include path="<%= pathtoinclude %>"/></div>
<sling:include resource="<%= par %>"/>
<sling:include addSelectors="spool"/>
<sling:include resource="<%= par %>" resourceType="<%= newType %>"/>
<sling:include resource="<%= par %>" resourceType="<%= newType %>"/>
<sling:include replaceSelectors="content" />
Die <sling:defineObjects>
-Tag stellt die folgenden, regelmäßig verwendeten Skriptobjekte bereit, auf die der Entwickler verweisen kann:
slingRequest
slingResponse
resourceResolver
.sling
resource
currentNode
log
Stellt einen SLF4J Logger zum Protokollieren des Sling-Protokollsystems in Skripten bereit, z. B. log.info("Executing my script").
Es weist folgende Attribute auf:
requestName
responseName
nodeName
l ogName resourceResolverName
slingName
Beispiel:
<%@page session="false" %><%
%><%@page import="com.day.cq.wcm.foundation.forms.ValidationHelper"%><%
%><%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling/1.0" %><%
%><sling:defineObjects/>
Die JavaServer-Seiten Standard-Tag-Bibliothek enthält viele nützliche und standardmäßige Tags. Die Taglibs für Kern, Formatierung und Funktionen werden durch die Variable /libs/foundation/global.jsp
wie im folgenden Snippet gezeigt.
<%@taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<%@taglib prefix="fn" uri="https://java.sun.com/jsp/jstl/functions" %>
Nach dem Import der /libs/foundation/global.jsp
wie zuvor beschrieben, können Sie die c
, fmt
und fn
-Präfixe für den Zugriff auf diese Taglibs. Die offizielle Dokumentation der JSTL ist verfügbar unter Das Java EE 5-Tutorial – standardmäßige Tag-Bibliothek JavaServer-Seiten.