As bibliotecas de tags Granite, CQ e Sling fornecem acesso a funções específicas para uso no script JSP de seus modelos e componentes.
A biblioteca de tags do Granite contém funções úteis.
Ao desenvolver o script jsp de um componente da interface do usuário do Granite, é recomendável incluir o seguinte código na parte superior do script:
<%@include file="/libs/granite/ui/global.jsp"%>
O global também declara o Sling library.
<%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling" %>
A tag <ui:includeClientLib>
Inclui uma biblioteca cliente html AEM, que pode ser uma biblioteca js, css ou de temas. Para várias inclusões de tipos diferentes, por exemplo js e css, essa tag precisa ser usada várias vezes no jsp. Esta tag é um invólucro de conveniência em torno da interface de serviço [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)
.
Ela tem os seguintes atributos:
categorias - uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas Javascript e CSS para as categorias fornecidas. O nome do tema é extraído da solicitação.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeIncludes
theme — Uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas relacionadas ao tema (tanto CSS quanto JS) para as categorias fornecidas. O nome do tema é extraído da solicitação.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeThemeInclude
js - Uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas JavaScript para as categorias fornecidas.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeJsInclude
css - uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas CSS para as categorias fornecidas.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeCssInclude
tema - Um sinalizador que indica apenas bibliotecas temáticas ou não deve ser incluído. Se omitido, ambos os conjuntos serão incluídos. Aplica-se somente a JS ou CSS puro (não para categorias ou inclui temas).
A tag <ui:includeClientLib>
pode ser usada da seguinte maneira em um 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" />
A biblioteca de tags CQ contém funções úteis.
Para usar a Biblioteca de tags do CQ no script, o script deve começar com o seguinte código:
<%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %>
Quando o arquivo /libs/foundation/global.jsp
é incluído no script, o taglib é declarado automaticamente.
Ao desenvolver o script jsp de um componente AEM, é recomendável incluir o seguinte código na parte superior do script:
<%@include file="/libs/foundation/global.jsp"%>
Ele declara os taglibs de sling, CQ e jstl e expõe os objetos de script usados regularmente definidos pela tag <cq:defineObjects />
. Isso reduz e simplifica o código jsp do seu componente.
A tag <cq:text>
é uma tag de conveniência que gera o texto do componente em um JSP.
Ela tem os seguintes atributos opcionais:
propriedade - Nome da propriedade a ser usada. O nome é relativo ao recurso atual.
value - Valor a ser usado para saída. Se esse atributo estiver presente, ele substituirá o uso do atributo da propriedade.
oldValue - Valor a ser usado para saída diff. Se esse atributo estiver presente, ele substituirá o uso do atributo da propriedade.
escapeXml - Define se os caracteres <>, &, ' e " na sequência de caracteres resultante devem ser convertidos para seus códigos de entidade de caractere correspondentes. O valor padrão é false. Observe que o escape é aplicado após a formatação opcional.
format - java.text.Format opcional para usar na formatação do texto.
noDiff - Suprime o cálculo de uma saída diff, mesmo se uma informação diff estiver presente.
tagClass - Nome de classe CSS de um elemento que rodeará uma saída não vazia. Se estiver vazio, nenhum elemento será adicionado.
tagName - Nome do elemento que rodeará uma saída não vazia. O padrão é DIV.
espaço reservado - Valor padrão para usar em texto nulo ou vazio no modo de edição, ou seja, o espaço reservado. Observe que a verificação padrão é executada após a formatação opcional e o escape, ou seja, é gravado como está na saída. O padrão é:
<div><span class="cq-text-placeholder">¶</span></div>
padrão - Valor padrão a ser usado para texto nulo ou vazio. Observe que a verificação padrão é executada após a formatação opcional e o escape, ou seja, é gravado como está na saída.
Alguns exemplos de como a tag <cq:text>
pode ser usada em um 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"/>
A tag <cq:setContentBundle>
cria um contexto de localização do i18n e o armazena na variável de configuração javax.servlet.jsp.jstl.fmt.localizationContext
.
Ela tem os seguintes atributos:
language - O idioma do local para o qual recuperar o pacote de recursos.
source - a fonte da qual a localidade deve ser obtida. Ele pode ser definido como um dos seguintes valores:
estático - a localidade é retirada do language
atributo, se disponível, caso contrário, da localidade padrão do servidor.
página - a localidade é retirada do idioma da página ou recurso atual, se disponível, caso contrário, do language
atributo, se disponível, caso contrário, da localidade padrão do servidor.
solicitação - a localidade é retirada do local da solicitação ( request.getLocale()
).
auto - a localidade é retirada do language
atributo, se disponível, caso contrário, do idioma da página ou recurso atual, se disponível, caso contrário, da solicitação.
Se o atributo source
não estiver definido:
Se o atributo language
for definido, o atributo source
assumirá como padrão "static
.
Se o atributo language
não estiver definido, o atributo source
assumirá auto
como padrão.
O "pacote de conteúdo" pode ser simplesmente usado pelas tags JSTL <fmt:message>
padrão. A pesquisa de mensagens por chaves é de duas vezes:
SlingHttpServletRequest.getResourceBundle(Locale)
). O idioma ou a localidade desse pacote é definida pelo idioma e pelos atributos de origem da tag <cq:setContentBundle>
.A tag <cq:setContentBundle>
pode ser usada da seguinte maneira em um jsp.
Para páginas que definem seu idioma:
... %><cq:setContentBundle source="page"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
Para páginas personalizadas do usuário:
... %><cq:setContentBundle scope="request"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
A tag <cq:include>
inclui um recurso na página atual.
Ela tem os seguintes atributos:
liberação
path
resourceType
script
ignoreComponentHierarchy
Exemplo:
<%@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>
Você deve usar <%@ include file="myScript.jsp" %>
ou <cq:include script="myScript.jsp" %>
para incluir um script?
<%@ include file="myScript.jsp" %>
informa o compilador JSP para incluir um arquivo completo no arquivo atual. É como se o conteúdo do arquivo incluído tivesse sido colado diretamente no arquivo original.<cq:include script="myScript.jsp">
, o arquivo é incluído no tempo de execução.Você deve usar <cq:include>
ou <sling:include>
?
<cq:include>
.<cq:include>
permite incluir diretamente os arquivos de script pelo nome ao usar o atributo de script. Isso leva em conta a herança do tipo de componente e recurso e geralmente é mais simples do que a adesão estrita à resolução do script do Sling usando seletores e extensões.<cq:includeClientLib>
O foi descontinuado desde o AEM 5.6. <ui:includeClientLib>
deve ser usado.
A tag <cq:includeClientLib>
Inclui uma biblioteca cliente html AEM, que pode ser uma biblioteca js, css ou de tema. Para várias inclusões de tipos diferentes, por exemplo js e css, essa tag precisa ser usada várias vezes no jsp. Esta tag é um invólucro de conveniência em torno da interface de serviço com.day.cq.widget.HtmlLibraryManager
.
Ela tem os seguintes atributos:
categorias - uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas Javascript e CSS para as categorias fornecidas. O nome do tema é extraído da solicitação.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeIncludes
theme — Uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas relacionadas ao tema (tanto CSS quanto JS) para as categorias fornecidas. O nome do tema é extraído da solicitação.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#
writeThemeInclude
js - Uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas JavaScript para as categorias fornecidas.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeJsInclude
css - uma lista de categorias de bibliotecas de clientes separadas por vírgulas. Isso incluirá todas as bibliotecas CSS para as categorias fornecidas.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeCssInclude
tema - Um sinalizador que indica apenas bibliotecas temáticas ou não deve ser incluído. Se omitido, ambos os conjuntos serão incluídos. Aplica-se somente a JS ou CSS puro (não para categorias ou inclui temas).
A tag <cq:includeClientLib>
pode ser usada da seguinte maneira em um 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" />
A tag <cq:defineObjects>
expõe os seguintes objetos de script, usados regularmente, que podem ser referenciados pelo desenvolvedor. Também expõe os objetos definidos pela tag <sling:defineObjects>
.
componentContext
componente
currentDesign
currentPage
currentStyle
designer
editContext
pageManager
pageProperties
propriedades
resourceDesign
resourcePage
requestName
responseName
resourceName
nodeName
logName
resourceResolverName
slingName
componentContextName
editContextName
propertiesName
pageManagerName
currentPageName
resourcePageName
pagePropertiesName
componentName
designerName
currentDesignName
resourceDesignName
currentStyleName
Exemplo
<%@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/>
Quando o arquivo /libs/foundation/global.jsp
é incluído no script, a tag <cq:defineObjects />
é incluída automaticamente.
A tag <cq:requestURL>
grava o URL da solicitação atual no JspWriter. As duas tags <cq:addParam>
e <cq:removeParam>
e podem ser usadas dentro do corpo desta tag para modificar o URL da solicitação atual antes que seja gravada.
Ela permite criar links para a página atual com parâmetros variáveis. Por exemplo, permite transformar a solicitação:
mypage.html?mode=view&query=something
em mypage.html?query=something
.
O uso de addParam
ou removeParam
altera apenas a ocorrência do parâmetro especificado, todos os outros parâmetros não são afetados.
<cq:requestURL>
não tem nenhum atributo.
Exemplos:
<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>
A tag <cq:addParam>
adiciona um parâmetro de solicitação com o nome e o valor fornecidos à tag <cq:requestURL>
de inclusão.
Ela tem os seguintes atributos:
name
valor
Exemplo:
<a title="filter results" href="<cq:requestURL><cq:addParam name="language" value="${bucket.value}"/></cq:requestURL>">${label} (${bucket.count})</a>
A tag <cq:removeParam>
remove um parâmetro de solicitação com o nome e o valor fornecidos da tag <cq:requestURL>
anexada. Se nenhum valor for fornecido, todos os parâmetros com o nome especificado serão removidos.
Ela tem os seguintes atributos:
name
Exemplo:
<a href="<cq:requestURL><cq:removeParam name="language"/></cq:requestURL>">remove filter</a>
A biblioteca de tags do Sling contém funções úteis do Sling.
Ao usar a Biblioteca de tags do Sling em seu script, o script deve começar com o seguinte código:
<%@ taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling/1.0" %>
Quando o arquivo /libs/foundation/global.jsp
é incluído no script, o sling taglib é declarado automaticamente.
A tag <sling:include>
inclui um recurso na página atual.
Ela tem os seguintes atributos:
liberação
recurso
caminho
resourceType
replaceSelectors
addSelectors
replaceSuffix
A resolução do recurso e do script incluídos com a tag <sling:include>
é a mesma de uma resolução normal de URL de sling. Por padrão, os seletores, a extensão etc. da solicitação atual também são usadas para o script incluído. Eles podem ser modificados por meio dos atributos da tag : por exemplo, replaceSelectors="foo.bar"
permite substituir os seletores.
Exemplos:
<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" />
A tag <sling:defineObjects>
expõe os seguintes objetos de script, usados regularmente, que podem ser referenciados pelo desenvolvedor:
slingRequest
slingResponse
resourceResolver
.sling
recurso
currentNode
log
Fornece um Logger SLF4J para fazer logon no sistema de log do Sling a partir de scripts, por exemplo. log.info("Executando meu script").
Ela tem os seguintes atributos:
requestName
responseName
nodeName
l ogName resourceResolverName
slingName
Exemplo:
<%@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/>
A Biblioteca de tags padrão de páginas do JavaServer contém muitas tags úteis e padrão. Os taglibs de núcleo, formatação e função são definidos pelo /libs/foundation/global.jsp
, conforme mostrado no trecho a seguir.
<%@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" %>
Depois de importar o arquivo /libs/foundation/global.jsp
conforme descrito anteriormente, você pode usar os prefixos c
, fmt
e fn
para acessar esses taglibs. A documentação oficial do JSTL está disponível em The Java EE 5 Tutorial - JavaServer Pages Standard Tag Library.