Taggbibliotek tag-libraries
Taggbiblioteken Granite, CQ och Sling ger dig tillgång till specifika funktioner som du kan använda i JSP-skriptet för dina mallar och komponenter.
Bibliotek för Granite-taggar granite-tag-library
Biblioteket med Granite-taggar innehåller användbara funktioner.
När du utvecklar jsp-skriptet för en GRA-gränssnittskomponent bör du ta med följande kod högst upp i skriptet:
<%@include file="/libs/granite/ui/global.jsp"%>
Den globala filen deklarerar även Sling-biblioteket.
<%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling" %>
<ui:includeClientLib> ui-includeclientlib
Taggen <ui:includeClientLib>
innehåller ett AEM HTML-klientbibliotek, som kan vara ett js, en css eller ett temabibliotek. För flera inkluderingar av olika typer, till exempel js och css, måste den här taggen användas flera gånger i jsp. Den här taggen är ett bekvämt brytningstecken runt [com.adobe.granite.ui.clientlibs.HtmlLibraryManager](https://helpx.adobe.com/experience-manager/6-5/sites/developing/using/reference-materials/javadoc/com/adobe/granite/ui/clientlibs/HtmlLibraryManager.html)
-tjänstgränssnittet.
Den har följande attribut:
categories - En lista med kommaavgränsade klientlibkategorier. Detta inkluderar alla JavaScript- och CSS-bibliotek för de angivna kategorierna. Temanamnet extraheras från begäran.
Motsvarar: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeIncludes
tema - En lista med kommaavgränsade klientbibliotekskategorier. Detta inkluderar alla temarelaterade bibliotek (både CSS och JS) för de angivna kategorierna. Temanamnet extraheras från begäran.
Motsvarar: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeThemeInclude
js - En lista med kommaavgränsade klientlibkategorier. Detta inkluderar alla JavaScript-bibliotek för de angivna kategorierna.
Motsvarar: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeJsInclude
css - En lista med kommaavgränsade klientlibkategorier. Detta inkluderar alla CSS-bibliotek för de angivna kategorierna.
Motsvarar: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeCssInclude
temed - En flagga som anger att bara bibliotek med teman eller icke-teman ska ingå. Om det utelämnas inkluderas båda uppsättningarna. Gäller endast rena JS- eller CSS-inkluderingar (inte för kategorier eller teman).
Taggen <ui:includeClientLib>
kan användas så här i en jsp:
<%-- 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" />
CQ-taggbibliotek cq-tag-library
CQ-taggbiblioteket innehåller användbara funktioner.
Om du vill använda CQ-taggbiblioteket i skriptet måste skriptet börja med följande kod:
<%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %>
/libs/foundation/global.jsp
inkluderas i skriptet deklareras taglib automatiskt.När du utvecklar jsp-skriptet för en AEM bör du ta med följande kod högst upp i skriptet:
<%@include file="/libs/foundation/global.jsp"%>
Den deklarerar sling-, CQ- och jstl-taggarna och visar de skriptobjekt som används ofta och som definieras av <cq:defineObjects />
-taggen. Detta förkortar och förenklar jsp-koden för komponenten.
<cq:text> cq-text
Taggen <cq:text>
är en praktisk tagg som matar ut komponenttext i en JSP.
Den har följande valfria attribut:
property - namnet på egenskapen som ska användas. Namnet är relativt till den aktuella resursen.
värde - värde som ska användas för utdata. Om det här attributet finns skrivs användningen av egenskapsattributet över.
oldValue - värde som ska användas för differensutdata. Om det här attributet finns skrivs användningen av egenskapsattributet över.
escapeXml - Definierar om tecknen <, >, &, ' och " i den resulterande strängen ska konverteras till motsvarande teckenentitetskoder. Standardvärdet är false. Den nya inställningen används efter den valfria formateringen.
format - Valfritt java.text.Format för formatering av texten.
noDiff - Utelämnar beräkningen av diff-utdata, även om det finns en diff-information.
tagClass - CSS-klassnamn för ett element som omger en utmatning som inte är tom. Om det är tomt läggs inget element till.
tagName - Namnet på elementet som omger utdata som inte är tomma. Som standard är det DIV.
platshållare - Standardvärde som ska användas för null eller tom text i redigeringsläge, d.v.s. platshållaren. Standardkontrollen utförs efter den valfria formateringen och escape-konverteringen, d.v.s. efter att utdata har skrivits som de är. Standardvärdet är:
<div><span class="cq-text-placeholder">¶</span></div>
standard - Standardvärde som ska användas för null eller tom text. Standardkontrollen utförs efter den valfria formateringen och escape-konverteringen, d.v.s. efter att utdata har skrivits som de är.
Några exempel på hur taggen <cq:text>
kan användas i en JSP:
<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"/>
<cq:setContentBundle> cq-setcontentbundle
Taggen <cq:setContentBundle>
skapar en i18n-lokaliseringskontext och lagrar den i konfigurationsvariabeln javax.servlet.jsp.jstl.fmt.localizationContext
.
Den har följande attribut:
språk - Språket för det språk som resurspaketet ska hämtas för.
källa - Den källa som språkinställningen ska hämtas från. Den kan ställas in på ett av följande värden:
-
static - språkinställningen hämtas från attributet
language
om det är tillgängligt, i annat fall från serverns standardspråkinställning. -
page - språkinställningen hämtas från språket på den aktuella sidan eller resursen om den är tillgänglig, annars från attributet
language
om det är tillgängligt, annars från serverns standardspråkinställning. -
request - språkinställningen hämtas från begäranspråkinställningen (
request.getLocale()
). -
auto - språkinställningen hämtas från attributet
language
om det är tillgängligt, annars från språket på den aktuella sidan eller resursen om det är tillgängligt, annars från begäran.
Om attributet source
inte har angetts:
-
Om attributet
language
anges blir standardvärdetstatic
för attributetsource
. -
Om attributet
language
inte anges blir standardvärdetauto
för attributetsource
.
Innehållspaketet kan användas av JSTL <fmt:message>
-standardtaggar. Nyckelsökningen efter meddelanden är två gånger:
- Först genomsöks JCR-egenskaperna för den underliggande resurs som återges efter översättningar. På så sätt kan du definiera en enkel komponentdialogruta för att redigera dessa värden.
- Om noden inte innehåller någon egenskap med namnet exakt som nyckeln, är reservvärdet att läsa in ett resurspaket från försäljningsbegäran (
SlingHttpServletRequest.getResourceBundle(Locale)
). Språket eller språkområdet för det här paketet definieras av språk- och källattributen för taggen<cq:setContentBundle>
.
Taggen <cq:setContentBundle>
kan användas på följande sätt i ett jsp.
För sidor som definierar språk:
... %><cq:setContentBundle source="page"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
För användaranpassade sidor:
... %><cq:setContentBundle scope="request"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
<cq:include> cq-include
Taggen <cq:include>
innehåller en resurs på den aktuella sidan.
Den har följande attribut:
tömma
- Ett booleskt värde som anger om utdata ska rensas innan målet tas med.
sökväg
- Sökvägen till det resursobjekt som ska inkluderas i den aktuella bearbetningen av begäran. Om den här sökvägen är relativ läggs den till i sökvägen till den aktuella resursen vars skript innehåller den angivna resursen. Sökväg och resourceType, eller skript måste anges.
resourceType
- Resurstypen för resursen som ska inkluderas. Om resurstypen anges måste sökvägen vara den exakta sökvägen till ett resursobjekt: i det här fallet stöds inte tillägg av parametrar, väljare och tillägg till sökvägen.
- Om resursen som ska inkluderas anges med sökvägsattributet som inte kan matchas för en resurs, kan taggen skapa ett syntetiskt resursobjekt från sökvägen och den här resurstypen.
- Sökväg och resourceType, eller skript måste anges.
skript
- Det jsp-skript som ska inkluderas. Sökväg och resourceType, eller skript måste anges.
ignoreComponentHierarchy
- Ett booleskt värde som styr om komponenthierarkin ska ignoreras för skriptupplösning. Om true respekteras bara sökvägarna.
Exempel:
<%@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>
Ska du använda <%@ include file="myScript.jsp" %>
eller <cq:include script="myScript.jsp" %>
för att inkludera ett skript?
- Direktivet
<%@ include file="myScript.jsp" %>
informerar JSP-kompilatorn om att inkludera en fullständig fil i den aktuella filen. Det är som om innehållet i den inkluderade filen klistrades in direkt i originalfilen. - Med taggen
<cq:include script="myScript.jsp">
inkluderas filen vid körning.
Ska du använda <cq:include>
eller <sling:include>
?
- När du utvecklar AEM bör du använda
<cq:include>
i Adobe. - Med
<cq:include>
kan du direkt inkludera skriptfiler efter deras namn när du använder skriptattributet. Detta tar hänsyn till arv av komponent- och resurstyp och är ofta enklare än att följa Sling:s skriptupplösning med väljare och tillägg.
<cq:includeClientLib> cq-includeclientlib
<cq:includeClientLib>
har tagits bort sedan AEM 5.6. <ui:includeClientLib>
bör användas i stället.Taggen <cq:includeClientLib>
innehåller ett AEM HTML-klientbibliotek, som kan vara ett js, en css eller ett temabibliotek. För flera inkluderingar av olika typer, till exempel js och css, måste den här taggen användas flera gånger i jsp. Den här taggen är ett bekvämt brytningstecken runt com.day.cq.widget.HtmlLibraryManager
-tjänstgränssnittet.
Den har följande attribut:
categories - En lista med kommaavgränsade klientlibkategorier. Detta inkluderar alla JavaScript- och CSS-bibliotek för de angivna kategorierna. Temanamnet extraheras från begäran.
Motsvarar: com.day.cq.widget.HtmlLibraryManager#writeIncludes
tema - En lista med kommaavgränsade klientbibliotekskategorier. Detta inkluderar alla temarelaterade bibliotek (både CSS och JS) för de angivna kategorierna. Temanamnet extraheras från begäran.
Motsvarar: com.day.cq.widget.HtmlLibraryManager#
writeThemeInclude
js - En lista med kommaavgränsade klientlibkategorier. Detta inkluderar alla JavaScript-bibliotek för de angivna kategorierna.
Motsvarar: com.day.cq.widget.HtmlLibraryManager#writeJsInclude
css - En lista med kommaavgränsade klientlibkategorier. Detta inkluderar alla CSS-bibliotek för de angivna kategorierna.
Motsvarar: com.day.cq.widget.HtmlLibraryManager#writeCssInclude
temed - En flagga som anger att bara bibliotek med teman eller icke-teman ska ingå. Om det utelämnas inkluderas båda uppsättningarna. Gäller endast rena JS- eller CSS-inkluderingar (inte för kategorier eller teman).
Taggen <cq:includeClientLib>
kan användas så här i en jsp:
<%-- 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" />
<cq:defineObjects> cq-defineobjects
Taggen <cq:defineObjects>
visar följande, ofta använda, skriptobjekt som utvecklaren kan referera till. Objekten som definieras av taggen <sling:defineObjects>
visas också.
componentContext
- det aktuella komponentkontextobjektet för begäran (com.day.cq.wcm.api.components.ComponentContext interface).
komponent
- det aktuella AEM-komponentobjektet för den aktuella resursen (com.day.cq.wcm.api.components.Component interface).
currentDesign
- den aktuella sidans designobjekt (com.day.cq.wcm.api.designer.Design-gränssnitt).
currentPage
- det aktuella AEM WCM-sidobjektet (com.day.cq.wcm.api.Page interface).
currentStyle
- det aktuella formatobjektet för den aktuella cellen (com.day.cq.wcm.api.designer.Style-gränssnitt).
designer
- det designer-objekt som används för att komma åt designinformation (com.day.cq.wcm.api.designer.Designer-gränssnitt).
editContext
- Redigera context-objektet för AEM (com.day.cq.wcm.api.components.EditContext interface).
pageManager
- sidhanterarobjektet för åtgärder på sidnivå (com.day.cq.wcm.api.PageManager-gränssnittet).
pageProperties
- sidegenskapsobjektet för den aktuella sidan (org.apache.sling.api.resource.ValueMap).
egenskaper
- egenskapsobjektet för den aktuella resursen (org.apache.sling.api.resource.ValueMap).
resourceDesign
- Resurssidans design-objekt (com.day.cq.wcm.api.designer.Design-gränssnitt).
resourcePage
- resurssidans objekt (com.day.cq.wcm.api.Page interface).
- Den har följande attribut:
requestName
- ärvd från sling
responseName
- ärvd från sling
resourceName
- ärvd från sling
nodeName
- ärvd från sling
logName
- ärvd från sling
resourceResolverName
- ärvd från sling
slingName
- ärvd från sling
componentContextName
- specifikt för wcm
editContextName
- specifikt för wcm
propertiesName
- specifikt för wcm
pageManagerName
- specifikt för wcm
currentPageName
- specifikt för wcm
resourcePageName
- specifikt för wcm
pagePropertiesName
- specifikt för wcm
componentName
- specifikt för wcm
designerName
- specifikt för wcm
currentDesignName
- specifikt för wcm
resourceDesignName
- specifikt för wcm
currentStyleName
- specifikt för wcm
Exempel
<%@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/>
/libs/foundation/global.jsp
inkluderas i skriptet inkluderas taggen <cq:defineObjects />
automatiskt.<cq:requestURL> cq-requesturl
Taggen <cq:requestURL>
skriver den aktuella begärande-URL:en till JspWriter. De två taggarna <cq:addParam>
och <cq:removeParam>
och kan användas inuti taggen för att ändra den aktuella begärande-URL:en innan den skrivs.
Du kan skapa länkar till den aktuella sidan med olika parametrar. Du kan till exempel omvandla din begäran:
mypage.html?mode=view&query=something
till mypage.html?query=something
.
Om du använder addParam
eller removeParam
ändras bara förekomsten av den angivna parametern. Alla andra parametrar påverkas inte.
<cq:requestURL>
har inget attribut.
Exempel:
<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>
<cq:addParam> cq-addparam
Taggen <cq:addParam>
lägger till en request-parameter med det angivna namnet och värdet i den omgivande <cq:requestURL>
-taggen.
Den har följande attribut:
namn
- namnet på den parameter som ska läggas till
värde
- värdet på parametern som ska läggas till
Exempel:
<a title="filter results" href="<cq:requestURL><cq:addParam name="language" value="${bucket.value}"/></cq:requestURL>">${label} (${bucket.count})</a>
<cq:removeParam> cq-removeparam
Taggen <cq:removeParam>
tar bort en request-parameter med det angivna namnet och värdet från den omgivande <cq:requestURL>
-taggen. Om inget värde anges tas alla parametrar med det angivna namnet bort.
Den har följande attribut:
namn
- namnet på den parameter som ska tas bort
Exempel:
<a href="<cq:requestURL><cq:removeParam name="language"/></cq:requestURL>">remove filter</a>
Sling Tag Library sling-tag-library
Sling-taggbiblioteket innehåller användbara Sling-funktioner.
När du använder Sling Tag Library i skriptet måste skriptet börja med följande kod:
<%@ taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling/1.0" %>
/libs/foundation/global.jsp
inkluderas i skriptet deklareras sling-taglib automatiskt.<sling:include> sling-include
Taggen <sling:include>
innehåller en resurs på den aktuella sidan.
Den har följande attribut:
tömma
- Ett booleskt värde som anger om utdata ska rensas innan målet tas med.
resurs
- Resursobjektet som ska inkluderas i den aktuella begärandebearbetningen. Resurs eller sökväg måste anges. Om båda anges prioriteras resursen.
sökväg
- Sökvägen till det resursobjekt som ska inkluderas i den aktuella bearbetningen av begäran. Om den här sökvägen är relativ läggs den till i sökvägen till den aktuella resursen vars skript innehåller den angivna resursen. Resurs eller sökväg måste anges. Om båda anges prioriteras resursen.
resourceType
- Resurstypen för resursen som ska inkluderas. Om resurstypen anges måste sökvägen vara den exakta sökvägen till ett resursobjekt: i det här fallet stöds inte tillägg av parametrar, väljare och tillägg till sökvägen.
- Om resursen som ska inkluderas anges med sökvägsattributet som inte kan matchas för en resurs, kan taggen skapa ett syntetiskt resursobjekt från sökvägen och den här resurstypen.
replaceSelectors
- När väljarna skickas ersätts de med värdet för det här attributet.
addSelectors
- När du skickar läggs värdet för det här attributet till i väljarna.
replaceSuffix
- När suffixet skickas ersätts det av attributets värde.
<sling:include>
är densamma som för en normal URL-sling-upplösning. Som standard används väljarna, tillägget och så vidare från den aktuella begäran även för det inkluderade skriptet. De kan ändras med taggattributen: med replaceSelectors="foo.bar"
kan du till exempel skriva över väljarna.Exempel:
<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" />
<sling:defineObjects> sling-defineobjects
Taggen <sling:defineObjects>
visar följande, ofta använda, skriptobjekt som utvecklaren kan referera till:
slingRequest
- SlingHttpServletRequest-objekt som ger åtkomst till rubrikinformationen för HTTP-begäran - utökar HttpServletRequest-standarden och ger åtkomst till Sling-specifika saker som resurs, sökvägsinformation och väljare.
slingResponse
- SlingHttpServletResponse-objekt som ger åtkomst till HTTP-svaret som skapas av servern. Detta är samma som det HttpServletResponse som det utökas från.begäran
- Standardobjektet för JSP-begäran, som är en ren HttpServletRequest.svar
- Standardsvarsobjektet för JSP som är ett rent HttpServletResponse.
resourceResolver
- Det aktuella ResourceResolver-objektet. Det är samma som slingRequest.getResourceResolver()
.sling
- Ett SlingScriptHelper-objekt som innehåller praktiska metoder för skript, huvudsakligen sling.include('/some/other/resource') för att inkludera svar från andra resurser i det här svaret (till exempel inbäddning av HTML-rubrikfragment) och sling.getService(foo.bar.Service.class) för att hämta OSGi-tjänster som är tillgängliga i Sling (klassnotation beroende på skriptspråk).
resurs
- det aktuella resursobjekt som ska hanteras, beroende på URL:en för begäran. Det är samma som slingRequest.getResource().
currentNode
- Om den aktuella resursen pekar på en JCR-nod (vilket vanligtvis är fallet i Sling) ger detta direktåtkomst till nodobjektet. I annat fall är det här objektet inte definierat.
log
-
Innehåller en SLF4J-loggare för loggning till Sling-loggsystemet från skript, till exempel log.info("Kör mitt skript").
-
Den har följande attribut:
requestName
responseName
nodeName
l ogName resourceResolverName
slingName
Exempel:
<%@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/>
JSTL-taggbibliotek jstl-tag-library
Standardtaggbiblioteket för JavaServer-sidor innehåller många användbara och standardtaggar. Taggarna core, formatting och functions definieras av /libs/foundation/global.jsp
enligt följande kodutdrag.
Extract of /libs/foundation/global.jsp extract-of-libs-foundation-global-jsp
<%@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" %>
När du har importerat filen /libs/foundation/global.jsp
enligt beskrivningen ovan kan du använda prefixen c
, fmt
och fn
för att komma åt dessa taggar. Den officiella dokumentationen för JSTL finns på Självstudiekursen Java™ EE 5 - JavaServer Pages Standard Tag Library.