Librerie di tag

Le librerie di tag Granite, CQ e Sling consentono di accedere a funzioni specifiche da utilizzare nello script JSP dei modelli e dei componenti.

Libreria di tag Granite

La libreria di tag Granite contiene funzioni utili.

Quando si sviluppa lo script jsp di un componente dell'interfaccia utente Granite, è consigliabile includere il seguente codice nella parte superiore dello script:

<%@include file="/libs/granite/ui/global.jsp?lang=it"%>

Il globale dichiara inoltre la libreria Sling.

<%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling" %>

ui:includeClientLib

Il tag <ui:includeClientLib> include una libreria client HTML AEM, che può essere un js, un css o una libreria di temi. Per più inclusioni di tipi diversi, ad esempio js e css, questo tag deve essere utilizzato più volte nel jsp. Questo tag è un wrapper per comodità intorno all'interfaccia del servizio [com.adobe.granite.ui.clientlibs.HtmlLibraryManager](https://helpx.adobe.com/it/experience-manager/6-5/sites/developing/using/reference-materials/javadoc/com/adobe/granite/ui/clientlibs/HtmlLibraryManager.html).

Ha i seguenti attributi:

categorie - Un elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie Javascript e CSS per le categorie indicate. Il nome del tema viene estratto dalla richiesta.

Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeIncludes

tema - Elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie correlate ai temi (sia CSS che JS) per le categorie indicate. Il nome del tema viene estratto dalla richiesta.

Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeThemeInclude

js - Elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie Javascript per le categorie indicate.

Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeJsInclude

css - Elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie CSS per le categorie specificate.

Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeCssInclude

temed - È necessario includere un flag che indica solo le librerie a tema o non a tema. Se omesso, entrambi i set saranno inclusi. Applicabile solo a JS o CSS puri (non per le categorie o i temi inclusi).

Il tag <ui:includeClientLib> può essere utilizzato come segue in un 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" />

Libreria di tag CQ

La libreria di tag CQ contiene funzioni utili.

Per utilizzare la libreria di tag CQ nello script, lo script deve iniziare con il seguente codice:

<%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %>
NOTA

Quando il file /libs/foundation/global.jsp è incluso nello script, il tag lib viene dichiarato automaticamente.

Quando si sviluppa lo script jsp di un componente AEM, si consiglia di includere il seguente codice nella parte superiore dello script:

<%@include file="/libs/foundation/global.jsp?lang=it"%>

Dichiara gli tag sling, CQ e jstl ed espone gli oggetti di script utilizzati regolarmente definiti dal tag <cq:defineObjects />. Questo accorcia e semplifica il codice jsp del componente.

cq:text

Il tag <cq:text> è un tag di convenienza che produce il testo di un componente in un JSP.

Contiene i seguenti attributi facoltativi:

property - Nome della proprietà da utilizzare. Il nome è relativo alla risorsa corrente.

value - Valore da utilizzare per l'output. Se questo attributo è presente, sovrascrive l'uso dell'attributo property.

oldValue - Valore da utilizzare per l'output delle diff. Se questo attributo è presente, sovrascrive l'uso dell'attributo property.

escapeXml - Definisce se i caratteri <>, &, ' e " nella stringa risultante devono essere convertiti nei codici di entità carattere corrispondenti. Il valore predefinito è false. L'escape viene applicato dopo la formattazione facoltativa.

format - Facoltativo java.text.Format per formattare il testo.

noDiff - Elimina il calcolo di un output diff, anche se sono presenti informazioni diff.

tagClass - Nome classe CSS di un elemento che racchiude un output non vuoto. Se vuoto, non viene aggiunto alcun elemento.

tagName - Nome dell'elemento che racchiude un output non vuoto. Il valore predefinito è DIV.

segnaposto - Valore predefinito da utilizzare per testo nullo o vuoto in modalità di modifica, ad esempio il segnaposto. Il controllo predefinito viene eseguito dopo la formattazione facoltativa e l'escape, ovvero viene scritto così come è nell'output. Per impostazione predefinita:

<div><span class="cq-text-placeholder">&para;</span></div>

default - Valore predefinito da utilizzare per il testo nullo o vuoto. Il controllo predefinito viene eseguito dopo la formattazione facoltativa e l'escape, ovvero viene scritto così come è nell'output.

Alcuni esempi di utilizzo del tag <cq:text> in un 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

Il tag <cq:setContentBundle> crea un contesto di localizzazione i18n e lo memorizza nella variabile di configurazione javax.servlet.jsp.jstl.fmt.localizationContext.

Ha i seguenti attributi:

lingua - La lingua delle impostazioni internazionali per cui recuperare il bundle di risorse.

source - L'origine da cui devono essere utilizzate le impostazioni internazionali. Può essere impostato su uno dei seguenti valori:

  • static : le impostazioni internazionali sono estratte dall' language attributo, se disponibile, altrimenti dalle impostazioni internazionali predefinite del server.

  • page - le impostazioni internazionali sono estratte dalla lingua della pagina o della risorsa corrente, se disponibile, altrimenti dall' language attributo, se disponibile, altrimenti dalle impostazioni internazionali predefinite del server.

  • request - le impostazioni internazionali vengono estratte dalle impostazioni internazionali della richiesta ( request.getLocale()).

  • auto - le impostazioni internazionali sono estratte dall' language attributo, se disponibile, altrimenti dalla lingua della pagina o risorsa corrente, se disponibile, altrimenti dalla richiesta.

Se l'attributo source non è impostato:

  • Se l'attributo language è impostato, per impostazione predefinita l'attributo source è "static.

  • Se l'attributo language non è impostato, per impostazione predefinita l'attributo source è auto.

Il "pacchetto di contenuti" può essere semplicemente utilizzato dai tag JSTL <fmt:message> standard. La ricerca dei messaggi in base alle chiavi è duplice:

  1. Innanzitutto, per le proprietà JCR della risorsa sottostante di cui è attualmente eseguito il rendering vengono ricercate le traduzioni. Questo consente di definire una semplice finestra di dialogo dei componenti per modificare tali valori.
  2. Se il nodo non contiene una proprietà denominata esattamente come la chiave, l'fallback consiste nel caricare un bundle di risorse dalla richiesta di sling ( SlingHttpServletRequest.getResourceBundle(Locale)). La lingua o le impostazioni internazionali per questo bundle sono definite dagli attributi di lingua e origine del tag <cq:setContentBundle>.

Il tag <cq:setContentBundle> può essere utilizzato come segue in un jsp.

Per le pagine che ne definiscono la lingua:

... %><cq:setContentBundle source="page"/><%  %>
<div class="error"><fmt:message key="Hello"/>
</div> ...

Per pagine personalizzate dall’utente:

... %><cq:setContentBundle scope="request"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...

cq:include

Il tag <cq:include> include una risorsa nella pagina corrente.

Ha i seguenti attributi:

rossore

  • Valore booleano che definisce se cancellare l'output prima di includere la destinazione.

path

  • Percorso dell'oggetto risorsa da includere nell'elaborazione della richiesta corrente. Se il percorso è relativo, viene aggiunto al percorso della risorsa corrente il cui script include la risorsa specificata. È necessario specificare percorso e resourceType o script.

resourceType

  • Il tipo di risorsa della risorsa da includere. Se il tipo di risorsa è impostato, il percorso deve corrispondere esattamente a quello di un oggetto risorsa: in questo caso, l'aggiunta di parametri, selettori ed estensioni al percorso non è supportata.
  • Se la risorsa da includere è specificata con l'attributo percorso che non può essere risolto in una risorsa, il tag può creare un oggetto risorsa sintetico al di fuori del percorso e di questo tipo di risorsa.
  • È necessario specificare percorso e resourceType o script.

script

  • Lo script jsp da includere. È necessario specificare percorso e resourceType o script.

ignoreComponentHierarchy

  • Valore booleano che controlla se la gerarchia dei componenti deve essere ignorata per la risoluzione dello script. Se true, vengono rispettati solo i percorsi di ricerca.

Esempio:

<%@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>

Utilizzare <%@ include file="myScript.jsp" %> o <cq:include script="myScript.jsp" %> per includere uno script?

  • La direttiva <%@ include file="myScript.jsp" %> informa il compilatore JSP di includere un file completo nel file corrente. È come se i contenuti del file incluso fossero incollati direttamente nel file originale.
  • Con il tag <cq:include script="myScript.jsp">, il file viene incluso in fase di esecuzione.

Utilizzare <cq:include> o <sling:include>?

  • Durante lo sviluppo AEM componenti, Adobe consiglia di utilizzare <cq:include>.
  • <cq:include> consente di includere direttamente i file di script in base al nome quando si utilizza l'attributo di script. Questo prende in considerazione l'ereditarietà di componenti e tipi di risorse ed è spesso più semplice rispetto alla rigorosa conformità alla risoluzione dello script di Sling utilizzando selettori ed estensioni.

cq:includeClientLib

ATTENZIONE

<cq:includeClientLib> è stato dichiarato obsoleto a partire dal AEM 5.6. <ui:includeClientLib> dovrebbe essere utilizzato al posto.

Il tag <cq:includeClientLib> include una libreria client HTML AEM, che può essere un js, un css o una libreria di temi. Per più inclusioni di tipi diversi, ad esempio js e css, questo tag deve essere utilizzato più volte nel jsp. Questo tag è un wrapper per comodità intorno all'interfaccia del servizio com.day.cq.widget.HtmlLibraryManager.

Ha i seguenti attributi:

categorie - Un elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie Javascript e CSS per le categorie indicate. Il nome del tema viene estratto dalla richiesta.

Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeIncludes

tema - Elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie correlate ai temi (sia CSS che JS) per le categorie indicate. Il nome del tema viene estratto dalla richiesta.

Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeThemeInclude

js - Elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie Javascript per le categorie indicate.

Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeJsInclude

css - Elenco di categorie di lib client separate da virgole. Questo includerà tutte le librerie CSS per le categorie specificate.

Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeCssInclude

temed - È necessario includere un flag che indica solo le librerie a tema o non a tema. Se omesso, entrambi i set saranno inclusi. Applicabile solo a JS o CSS puri (non per le categorie o i temi inclusi).

Il tag <cq:includeClientLib> può essere utilizzato come segue in un 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

Il tag <cq:defineObjects> espone i seguenti oggetti di script, utilizzati regolarmente, ai quali lo sviluppatore può fare riferimento. Inoltre, espone gli oggetti definiti dal tag <sling:defineObjects>.

componentContext

  • l’oggetto contestuale del componente corrente della richiesta (com.day.cq.wcm.api.components.ComponentContext interface).

componente

  • l’oggetto componente AEM corrente della risorsa corrente (interfaccia com.day.cq.wcm.api.components.Component).

currentDesign

  • l'oggetto di progettazione corrente della pagina corrente (interfaccia com.day.cq.wcm.api.designer.Design).

currentPage

  • l'oggetto pagina WCM AEM corrente (interfaccia com.day.cq.wcm.api.Page).

currentStyle

  • l'oggetto stile corrente della cella corrente (interfaccia com.day.cq.wcm.api.designer.Style).

designer

  • l'oggetto designer utilizzato per accedere alle informazioni di progettazione (interfaccia com.day.cq.wcm.api.designer.Designer).

editContext

  • l’oggetto contesto di modifica del componente AEM (interfaccia com.day.cq.wcm.api.components.EditContext).

pageManager

  • l'oggetto page manager per le operazioni a livello di pagina (interfaccia com.day.cq.wcm.api.PageManager).

pageProperties

  • l’oggetto delle proprietà della pagina corrente (org.apache.sling.api.resource.ValueMap).

proprietà

  • l'oggetto properties della risorsa corrente (org.apache.sling.api.resource.ValueMap).

resourceDesign

  • l'oggetto di progettazione della pagina delle risorse (interfaccia com.day.cq.wcm.api.designer.Design).

resourcePage

  • l'oggetto pagina delle risorse (interfaccia com.day.cq.wcm.api.Page).
  • Ha i seguenti attributi:

requestName

  • ereditato da sling

responseName

  • ereditato da sling

resourceName

  • ereditato da sling

nodeName

  • ereditato da sling

logName

  • ereditato da sling

resourceResolverName

  • ereditato da sling

slingName

  • ereditato da sling

componentContextName

  • specifica per wcm

editContextName

  • specifica per wcm

propertiesName

  • specifica per wcm

pageManagerName

  • specifica per wcm

currentPageName

  • specifica per wcm

resourcePageName

  • specifica per wcm

pagePropertiesName

  • specifica per wcm

componentName

  • specifica per wcm

designerName

  • specifica per wcm

currentDesignName

  • specifica per wcm

resourceDesignName

  • specifica per wcm

currentStyleName

  • specifica per wcm

Esempio

<%@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/>
NOTA

Quando il file /libs/foundation/global.jsp è incluso nello script, il tag <cq:defineObjects /> viene incluso automaticamente.

cq:requestURL

Il tag <cq:requestURL> scrive l'URL della richiesta corrente in JspWriter. I due tag <cq:addParam> e <cq:removeParam> <a3/> possono essere utilizzati all'interno del corpo di questo tag per modificare l'URL della richiesta corrente prima che venga scritto.

Consente di creare collegamenti alla pagina corrente con parametri variabili. Ad esempio, consente di trasformare la richiesta:

mypage.html?mode=view&query=something in mypage.html?query=something.

L'utilizzo di addParam o removeParam modifica solo l'occorrenza del parametro specificato, tutti gli altri parametri non vengono modificati.

<cq:requestURL> non ha alcun attributo.

Esempi:

<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

Il tag <cq:addParam> aggiunge un parametro di richiesta con il nome e il valore specificati al tag <cq:requestURL> che lo contiene.

Ha i seguenti attributi:

name

  • nome del parametro da aggiungere

valore

  • valore del parametro da aggiungere

Esempio:

<a title="filter results" href="<cq:requestURL><cq:addParam name="language" value="${bucket.value}"/></cq:requestURL>">${label} (${bucket.count})</a>

cq:removeParam

Il tag <cq:removeParam> rimuove un parametro di richiesta con il nome e il valore specificati dal tag <cq:requestURL> che lo contiene. Se non viene fornito alcun valore, vengono rimossi tutti i parametri con il nome specificato.

Ha i seguenti attributi:

name

  • nome del parametro da rimuovere

Esempio:

<a href="<cq:requestURL><cq:removeParam name="language"/></cq:requestURL>">remove filter</a>

Libreria di tag Sling

La libreria di tag Sling contiene utili funzioni Sling.

Quando si utilizza la libreria di tag Sling nello script, lo script deve iniziare con il seguente codice:

<%@ taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling/1.0" %>
NOTA

Quando il file /libs/foundation/global.jsp è incluso nello script, il tag sling viene dichiarato automaticamente.

sling:include

Il tag <sling:include> include una risorsa nella pagina corrente.

Ha i seguenti attributi:

rossore

  • Valore booleano che definisce se cancellare l'output prima di includere la destinazione.

riferimento

  • L'oggetto risorsa da includere nell'elaborazione della richiesta corrente. È necessario specificare una risorsa o un percorso. Se vengono specificati entrambi, la risorsa ha la precedenza.

path

  • Percorso dell'oggetto risorsa da includere nell'elaborazione della richiesta corrente. Se il percorso è relativo, viene aggiunto al percorso della risorsa corrente il cui script include la risorsa specificata. È necessario specificare una risorsa o un percorso. Se vengono specificati entrambi, la risorsa ha la precedenza.

resourceType

  • Il tipo di risorsa della risorsa da includere. Se il tipo di risorsa è impostato, il percorso deve corrispondere esattamente a quello di un oggetto risorsa: in questo caso, l'aggiunta di parametri, selettori ed estensioni al percorso non è supportata.
  • Se la risorsa da includere è specificata con l'attributo percorso che non può essere risolto in una risorsa, il tag può creare un oggetto risorsa sintetico al di fuori del percorso e di questo tipo di risorsa.

replaceSelectors

  • Durante l'invio, i selettori vengono sostituiti con il valore di questo attributo.

addSelectors

  • Durante l'invio, il valore di questo attributo viene aggiunto ai selettori.

replaceSuffix

  • Durante l'invio, il suffisso viene sostituito dal valore di questo attributo.
NOTA

La risoluzione della risorsa e lo script inclusi con il tag <sling:include> è uguale a quella di una normale risoluzione URL sling. Per impostazione predefinita, i selettori, le estensioni, ecc. dalla richiesta corrente vengono utilizzati anche per lo script incluso. Possono essere modificati tramite gli attributi del tag: ad esempio replaceSelectors="foo.bar" consente di sovrascrivere i selettori.

Esempi:

<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

Il tag <sling:defineObjects> espone i seguenti oggetti di script, utilizzati regolarmente e a cui lo sviluppatore può fare riferimento:

slingRequest

  • Oggetto SlingHttpServletRequest, che fornisce l'accesso alle informazioni dell'intestazione della richiesta HTTP - estende la richiesta HttpServletRequest standard - e fornisce l'accesso a elementi specifici di Sling come risorsa, informazioni sul percorso, selettore, ecc.

slingResponse

  • Oggetto SlingHttpServletResponse, che fornisce l'accesso per la risposta HTTP creata dal server. Attualmente è lo stesso di HttpServletResponse da cui si estende.request
  • L'oggetto di richiesta JSP standard, che è una richiesta HttpServletRequest pura.response
  • L'oggetto di risposta JSP standard che è un oggetto HttpServletResponse puro.

resourceResolver

  • L'oggetto ResourceResolver corrente. È lo stesso di slingRequest.getResourceResolver()

.sling

  • Un oggetto SlingScriptHelper contenente metodi comodi per gli script, principalmente sling.include('/some/other/resource') per includere le risposte di altre risorse all'interno di questa risposta (ad esempio per recuperare i servizi OSGi disponibili in Sling (notazione classe a seconda del linguaggio di script) e sling.getService(foo.bar.Service.class).

riferimento

  • l'oggetto Resource corrente da gestire, in base all'URL della richiesta. È uguale a slingRequest.getResource().

currentNode

  • Se la risorsa corrente punta a un nodo JCR (che generalmente si verifica in Sling), questo consente l'accesso diretto all'oggetto Node. In caso contrario l'oggetto non è definito.

log

  • Fornisce un logger SLF4J per l'accesso al sistema di log Sling dall'interno degli script, ad esempio log.info("Esecuzione dello script").

  • Ha i seguenti attributi:

requestName

responseName

nodeName

l ogName resourceResolverName

slingName

Esempio:

<%@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/>

Libreria di tag JSTL

La libreria di tag standard delle pagine JavaServer contiene molti tag utili e standard. Gli tag core, di formattazione e delle funzioni sono definiti dall' /libs/foundation/global.jsp come mostrato nel frammento di codice seguente.

Estratto di /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" %>

Dopo aver importato il file /libs/foundation/global.jsp come descritto in precedenza, è possibile utilizzare i prefissi c, fmt e fn per accedere a tali tag. La documentazione ufficiale del JSTL è disponibile all'indirizzo The Java EE 5 Tutorial - JavaServer Pages Standard Tag Library.

In questa pagina

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now