Las bibliotecas de etiquetas Granite, CQ y Sling le proporcionan acceso a funciones específicas para utilizarlas en el script JSP de sus plantillas y componentes.
La biblioteca de etiquetas Granite contiene funciones útiles.
Al desarrollar el script jsp de un componente de la interfaz de usuario de Granite, se recomienda incluir el siguiente código en la parte superior del script:
<%@include file="/libs/granite/ui/global.jsp"%>
El global también declara el Biblioteca de Sling.
<%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling" %>
El <ui:includeClientLib>
AEM etiqueta Incluye una biblioteca de cliente de html de, que puede ser una biblioteca js, css o de temáticas. Para varias inclusiones de diferentes tipos, por ejemplo js y css, esta etiqueta debe utilizarse varias veces en jsp. Esta etiqueta es un envoltorio cómodo para el [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)
interfaz de servicio de.
Tiene los atributos siguientes:
categorías - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas de JavaScript y CSS para las categorías dadas. El nombre de la temática se extrae de la solicitud.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeIncludes
tema - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas relacionadas con temas (tanto CSS como JS) para las categorías dadas. El nombre de la temática se extrae de la solicitud.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeThemeInclude
js - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas de JavaScript para las categorías dadas.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeJsInclude
css - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas CSS para las categorías dadas.
Equivalente a: com.adobe.granite.ui.clientlibs.HtmlLibraryManager#writeCssInclude
temático : Se debe incluir un indicador que indique que solo hay bibliotecas temáticas o no temáticas. Si se omite, se incluyen ambos conjuntos. Solo se aplica a inclusiones JS o CSS puras (no para categorías ni inclusiones de temas).
El <ui:includeClientLib>
la etiqueta se puede utilizar de la siguiente manera en 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" />
La biblioteca de etiquetas CQ contiene funciones útiles.
Para utilizar la biblioteca de etiquetas CQ en el script, este debe comenzar con el siguiente código:
<%@taglib prefix="cq" uri="https://www.day.com/taglibs/cq/1.0" %>
Si la variable /libs/foundation/global.jsp
se incluye en el script, la etiqueta se declara automáticamente.
AEM Al desarrollar el script jsp de un componente de la, se recomienda incluir el siguiente código en la parte superior del script:
<%@include file="/libs/foundation/global.jsp"%>
Declara las etiquetas sling, CQ y jstl y expone los objetos de script utilizados regularmente definidos por <cq:defineObjects />
etiqueta. Esto acorta y simplifica el código jsp del componente.
El <cq:text>
es una etiqueta de conveniencia que genera texto de componente en un JSP.
Tiene los siguientes atributos opcionales:
propiedad : nombre de la propiedad que se va a utilizar. El nombre es relativo al recurso actual.
valor : valor que se utilizará para la salida. Si este atributo está presente, sobrescribe el uso del atributo property.
oldValue : valor que se utilizará para la salida de diferencia. Si este atributo está presente, sobrescribe el uso del atributo property.
escapeXml - Define si los caracteres <, >, &, ' y " de la cadena resultante deben convertirse a sus códigos de entidad de caracteres correspondientes. El valor predeterminado es false. Tenga en cuenta que el escape se aplica después del formato opcional.
formato : java.text.Format opcional que se utilizará para dar formato al texto.
noDiff : Suprime el cálculo de una salida de diferencia, incluso si hay una información de diferencia presente.
tagClass : nombre de clase CSS de un elemento que rodeará una salida no vacía. Si está vacío, no se agrega ningún elemento.
tagName : nombre del elemento que rodeará una salida no vacía. El valor predeterminado es DIV.
placeholder : valor predeterminado que se utilizará para el texto nulo o vacío en el modo de edición, es decir, el marcador de posición. Tenga en cuenta que la comprobación predeterminada se realiza después del formato y el escape opcionales, es decir, se escribe tal cual en la salida. El valor predeterminado es:
<div><span class="cq-text-placeholder">¶</span></div>
predeterminado - Valor predeterminado que se utilizará para el texto nulo o vacío. Tenga en cuenta que la comprobación predeterminada se realiza después del formato y del escape opcionales, es decir, se escribe tal cual en la salida.
Algunos ejemplos muestran cómo la variable <cq:text>
La etiqueta se puede utilizar en 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"/>
El <cq:setContentBundle>
crea un contexto de localización i18n y lo almacena en el javax.servlet.jsp.jstl.fmt.localizationContext
variable de configuración.
Tiene los atributos siguientes:
idioma : El idioma de la configuración regional para la que se recupera el paquete de recursos.
origen : origen desde el que se debe tomar la configuración regional. Se puede establecer en uno de los siguientes valores:
estático - la configuración regional se toma del language
atributo si está disponible; en caso contrario, desde la configuración regional predeterminada del servidor.
página : la configuración regional se toma del idioma de la página o el recurso actual si está disponible; de lo contrario, se toma del language
atributo si está disponible; en caso contrario, desde la configuración regional predeterminada del servidor.
solicitud - la configuración regional se toma de la configuración regional de la solicitud ( request.getLocale()
).
auto - la configuración regional se toma del language
atributo si está disponible; de lo contrario, desde el idioma de la página o el recurso actual, si está disponible; de lo contrario, desde la solicitud.
Si la variable source
no se ha establecido el atributo:
Si la variable language
se ha establecido el atributo, la variable source
el atributo toma el valor predeterminado " static
.
Si la variable language
no se ha definido el atributo, la variable source
el atributo toma el valor predeterminado auto
.
El "paquete de contenido" puede utilizarse simplemente con el JSTL estándar <fmt:message>
etiquetas. La búsqueda de mensajes por claves es doble:
SlingHttpServletRequest.getResourceBundle(Locale)
). El idioma o la configuración regional de este paquete se define mediante los atributos de idioma y origen del <cq:setContentBundle>
etiqueta.El <cq:setContentBundle>
la etiqueta se puede utilizar de la siguiente manera en un jsp.
Para páginas que definen su idioma:
... %><cq:setContentBundle source="page"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
Para páginas personalizadas de usuario:
... %><cq:setContentBundle scope="request"/><% %>
<div class="error"><fmt:message key="Hello"/>
</div> ...
El <cq:include>
incluye un recurso en la página actual.
Tiene los atributos siguientes:
vaciar
path
resourceType
script
ignoreComponentHierarchy
Ejemplo:
<%@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>
¿Debe utilizar <%@ include file="myScript.jsp" %>
o <cq:include script="myScript.jsp" %>
para incluir un script?
<%@ include file="myScript.jsp" %>
indica al compilador de JSP que incluya un archivo completo en el archivo actual. Es como si el contenido del archivo incluido se hubiera pegado directamente en el archivo original.<cq:include script="myScript.jsp">
, el archivo se incluye durante la ejecución.¿Debe utilizar <cq:include>
o <sling:include>
?
<cq:include>
.<cq:include>
permite incluir directamente archivos de script por su nombre cuando se utiliza el atributo script. Esto tiene en cuenta la herencia de componentes y tipos de recursos, y a menudo es más sencillo que el cumplimiento estricto de la resolución de scripts de Sling mediante selectores y extensiones.<cq:includeClientLib>
AEM ha quedado obsoleto desde la versión 5… <ui:includeClientLib>
debe utilizarse en su lugar.
El <cq:includeClientLib>
AEM etiqueta Incluye una biblioteca de cliente html de la comunidad, que puede ser una biblioteca js, una css o una biblioteca de temáticas. Para varias inclusiones de diferentes tipos, por ejemplo js y css, esta etiqueta debe utilizarse varias veces en jsp. Esta etiqueta es un envoltorio cómodo para el com.day.cq.widget.HtmlLibraryManager
interfaz de servicio de.
Tiene los atributos siguientes:
categorías - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas de JavaScript y CSS para las categorías dadas. El nombre de la temática se extrae de la solicitud.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeIncludes
tema - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas relacionadas con temas (tanto CSS como JS) para las categorías dadas. El nombre de la temática se extrae de la solicitud.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#
writeThemeInclude
js - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas de JavaScript para las categorías dadas.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeJsInclude
css - Una lista de categorías de biblioteca de cliente separadas por comas. Esto incluirá todas las bibliotecas CSS para las categorías dadas.
Equivalente a: com.day.cq.widget.HtmlLibraryManager#writeCssInclude
temático : Se debe incluir un indicador que indique que solo hay bibliotecas temáticas o no temáticas. Si se omite, se incluyen ambos conjuntos. Solo se aplica a inclusiones JS o CSS puras (no para categorías ni inclusiones de temas).
El <cq:includeClientLib>
la etiqueta se puede utilizar de la siguiente manera en 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" />
El <cq:defineObjects>
expone los siguientes objetos de script, que se utilizan con regularidad y a los que el desarrollador puede hacer referencia. También expone los objetos definidos por la variable <sling:defineObjects>
etiqueta.
componentContext
componente
currentDesign
currentPage
currentStyle
diseñador
editContext
pageManager
pageProperties
propiedades
resourceDesign
resourcePage
requestName
responseName
resourceName
nodeName
logName
resourceResolverName
slingName
componentContextName
editContextName
propertiesName
pageManagerName
currentPageName
resourcePageName
pagePropertiesName
componentName
designerName
currentDesignName
resourceDesignName
currentStyleName
Ejemplo
<%@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/>
Si la variable /libs/foundation/global.jsp
se incluye en la secuencia de comandos, la variable <cq:defineObjects />
se incluye automáticamente.
El <cq:requestURL>
escribe la dirección URL de la solicitud actual en JspWriter. Las dos etiquetas <cq:addParam>
y <cq:removeParam>
y se pueden usar dentro del cuerpo de esta etiqueta para modificar la URL de la solicitud actual antes de que se escriba.
Permite crear vínculos a la página actual con distintos parámetros. Por ejemplo, permite transformar la solicitud:
mypage.html?mode=view&query=something
en mypage.html?query=something
.
El uso de addParam
o removeParam
Si solo cambia la aparición del parámetro determinado, el resto de parámetros no se verán afectados.
<cq:requestURL>
no tiene ningún atributo.
Por ejemplo:
<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>
El <cq:addParam>
agrega un parámetro de solicitud con el nombre y valor dados al contenedor <cq:requestURL>
etiqueta.
Tiene los atributos siguientes:
name
valor
Ejemplo:
<a title="filter results" href="<cq:requestURL><cq:addParam name="language" value="${bucket.value}"/></cq:requestURL>">${label} (${bucket.count})</a>
El <cq:removeParam>
elimina un parámetro de solicitud con el nombre y valor dados del contenedor <cq:requestURL>
etiqueta. Si no se proporciona ningún valor, se eliminan todos los parámetros con el nombre dado.
Tiene los atributos siguientes:
name
Ejemplo:
<a href="<cq:requestURL><cq:removeParam name="language"/></cq:requestURL>">remove filter</a>
La biblioteca de etiquetas Sling contiene funciones Sling útiles.
Cuando se utiliza la biblioteca de etiquetas Sling en el script, este debe comenzar con el siguiente código:
<%@ taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling/1.0" %>
Si la variable /libs/foundation/global.jsp
se incluye en el script, la etiqueta sling se declara automáticamente.
El <sling:include>
incluye un recurso en la página actual.
Tiene los atributos siguientes:
vaciar
resource
path
resourceType
replaceSelectors
addSelectors
replaceSuffix
La resolución del recurso y la secuencia de comandos que se incluyen con el <sling:include>
es la misma que para una resolución de URL normal de sling. De forma predeterminada, los selectores, la extensión, etc. de la solicitud actual también se utilizan para el script incluido. Se pueden modificar mediante los atributos de etiqueta: por ejemplo replaceSelectors="foo.bar"
permite sobrescribir los selectores.
Por ejemplo:
<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" />
El <sling:defineObjects>
expone los siguientes objetos de script, que se utilizan con regularidad y a los que el desarrollador puede hacer referencia:
slingRequest
slingResponse
resourceResolver
.sling
resource
currentNode
registro
Proporciona un registrador SLF4J para registrar en el sistema de registro de Sling desde scripts, p. ej. log.info("Ejecutando mi script").
Tiene los atributos siguientes:
requestName
responseName
nodeName
l resourceResolverName de logName
slingName
Ejemplo:
<%@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/>
El Biblioteca de etiquetas estándar de páginas de JavaServer contiene muchas etiquetas útiles y estándar. Las etiquetas core, formatting y functions se definen mediante la variable /libs/foundation/global.jsp
como se muestra en el siguiente fragmento de código.
<%@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" %>
Después de importar el /libs/foundation/global.jsp
como se ha descrito anteriormente, puede utilizar el c
, fmt
y fn
prefijos para acceder a esas etiquetas. La documentación oficial del JSTL está disponible en Tutorial de Java EE 5: Biblioteca de etiquetas estándar de JavaServer Pages.