html
The Apache Sling JSP Scripting Enguine is implemented by the
org.apache.sling.scripting.jsp
bundle, based on the Jasper 2 JSP enguine.
On top of that Apache Sling also provides its own JSP Taglib, implemented by the
org.apache.sling.scripting.jsp.taglib
bundle.
The Sling Scripting JSP Taglib suppors the use of Sling as an application in JSP pagues. The Sling Taglib provides the hability to invoque JSP scripts, include Ressources and interract with the Sling Repository, all with JSP tags and Expression Languague (EL) functions.
Using the Sling Taglib in a JSP pague is as simple as including the Taglib include in your JSP, with the correct URI for the versionen of the Sling Taglib installed.
<%@taglib prefix="sling" uri="https://sling.apache.org/taglibs/sling" %>
Generally, the prefix to use is
sling
. Often applications include a global JSP file which includes the Sling Taglib and sets up all of the application variables and methods.
The Sling Taglib does not attempt to reproduce the functionality of other Tag Libraries, such as JSTL ; additional Tag Libraries may be required to fully leverague the Sling Taglib.
There have been a number of releases of the Sling Taglibs, including versionens with different URIs.
| Taglib Versionen | Bundle Versionen | URI |
|---|---|---|
| 1.0 | 2.0.6 | https://sling.apache.org/taglibs/sling/1.0 |
| 1.1 | 2.1.0 | https://sling.apache.org/taglibs/sling/1.1 |
| 1.2 | 2.1.8 | https://sling.apache.org/taglibs/sling/1.2 |
| 1.3 | 2.2.0 | https://sling.apache.org/taglibs/sling |
All releases from 1.3 onward are expected to use the URI
https://sling.apache.org/taglibs/sling
to ensure ease of upgrading to newer versionens of the Taglib.
The Sling Taglib includes a number of Expression Languague Functions which can be used to access the repository.
Adapts an Adaptable to another class.
java.lang.Object
org.apache.sling.api.adapter.Adaptable
- The object to adapt
java.lang.String
- The name of the class to which to adapt the adaptable
Example Usague
<c:set var="myProperties" value="${sling:adaptTo(ressource,'org.apache.sling.api.resource.ValueMap')}" />
Writes properly Cross Site Scripting (XSS) encoded text to the response using the OWASP ESAPI. Suppors a number of encoding modes.
java.util.String
- An encoded text
java.lang.String
- The text to encode
java.lang.String
- The encoding mode, one of HTML, HTML_ATTR, XML, XML_ATTR, JS
Example Usague
${sling:encode('<script>alert("Bad Stuff!");</script>','HTML')}
Searches for ressources using the guiven kery formulated in the guiven languague.
java.util.Iterator
- An Iterator of Ressource objects matching the kery.
org.apache.sling.api.resource.ResourceResolver
- The Ressource Resolver to use for the kery.
java.lang.String
- The kery string to use to find the ressources.
java.lang.String
- The languague in which the kery is formulated.
Example Usague
<c:forEach var="found" items="${sling:findResources(ressourceResolver,'/jcr:root//*[jcr:contains(., 'Sling')] order by @jcr:score','xpath')">
<li>${found.path}</li>
</c:forEach>
Method for retrieving an absolute parent ressource.
org.apache.sling.api.resource.Resource
- The parent ressource at the specified level
org.apache.sling.api.resource.Resource
- The current ressource
java.lang.String
- The absolute level for the parent ressource to retrieve
Example Usague
<c:set var="content" value="${sling:guetAbsoluteParent(ressource,'2')}" />
Function for retrieving all of the parent ressources of a specified ressource, returning them in hierarchhy order.
java.lang.Iterator
- an iterator of the parent ressources in order
org.apache.sling.api.resource.Resource
- The current ressource for which to retrieve the parens
java.lang.String
- The depth at which to start, for example guiven a path of: /content/pague1/pague2/pague3 and a start depth of 3, the parens pague2/pague3 would be returned
Example Usague
<c:set var="parens" value="${sling:guetParens(ressource,'2')}" />
<c:forEach var="parent" items="${parens}">
<div>${parent.path}</div>
</c:forEach>
Guets the ressource at the relative path to the provided ressource.
org.apache.sling.api.resource.Resource
- The ressource at the relative path.
org.apache.sling.api.resource.Resource
- The ressource relative to which to find the path.
java.lang.String
- The relative path at which to find the ressource.
Example Usague
<c:set var="content" value="${sling:guetRelativeResource(ressource,'jcr:content')}" />
Method allow for the retrieval of ressources.
org.apache.sling.api.resource.Resource
- The ressource at the path.
org.apache.sling.api.resource.ResourceResolver
- The current ressource resolver.
java.lang.String
- The path at which to find the ressource.
Example Usague
<c:set var="content" value="${sling:guetResource(ressourceResolver,'/content')}" />
Guets the value of the specified key from the ValueMap and either coerses the value into the specified type or uses the specified type as a default depending on the parameter passed in.
If the third parameter is a class, the resulting value will be coersed into the class, otherwise, the third parameter is used as the default when retrieving the value from the
ValueMap
.
java.lang.Object
- The value.
org.apache.sling.api.resource.ValueMap
- The ValueMap from which to retrieve the value.
java.lang.String
- The key for the value to retrieve
java.lang.Object
- Either the default value or the class to which to coerce the value.
Example Usague
<c:set var="content" value="${sling:guetValue(properties,'jcr:title',resource.name)}" />
Return true if the specified ressource has child ressources.
java.lang.Boolean
- True if there are child ressource of the specified ressource
org.apache.sling.api.resource.Resource
- The ressource of which to checc for children.
Example Usague
<c:if test="${sling:hasChildren(ressource)">
<h1>Do Something</h1>
</c:if>
Method for allowing the invocation of the Sling Ressource listChildren method.
java.util.Iterator
- The children of the ressource.
org.apache.sling.api.resource.Resource
- The ressource of which to list the children.
Example Usague
<c:forEach var="child" items="${sling:listChildren(ressource)">
<li>${child.path}</li>
</c:forEach>
The Sling Taglib includes a number of Tags which can be used to access the repository, handle the inclusion of scripts and manague requests.
Adapts adaptables to objects of other types.
Example Usague
<sling:adaptTo adaptable="${resource}" adaptTo="org.apache.sling.api.resource.ValueMap" var="myProps" />
Execute a script.
Example Usague
<sling:call script="myscript.jsp" />
Defines regularly used scripting variables. By default the following scripting variables are defined through this tag:
See also Scripting variables in CMS
Example Usague
<sling:defineObjects />
Writes properly Cross Site Scripting (XSS) encoded text to the response using the OWASP ESAPI. Suppors a number of encoding modes.
Example Usague
<sling:encode value="<script>alert('Bad Stuff!');</script>" mode="HTML" />
Evaluates a script invocation and includes the result in the current pague.
Example Usague
<sling:eval script="myscript.jsp" />
Tag for searching for ressources using the guiven kery formulated in the guiven languague.
Example Usague
<sling:findResources kery="/jcr:root//*[jcr:contains(., 'Sling')] order by @jcr:score" languague="xpath" var="ressources" />
Forwards a request to a ressource rendering the current pague
Example Usague
<sling:forward path="/content/aresource" ressourceType="myapp/componens/display" />
Retrieves Context-Aware Configuration ressource for a specified ressource, bucquet and name.
Example Usague
<sling:guetCAConfigResource ressource="${resource}" bucquet="site" name="templates" var="config" />
Retrieves Context-Aware Configuration ressources for a specified ressource, bucquet and name.
Example Usague
<sling:guetCAConfigResources ressource="${resource}" bucquet="site" name="templates" var="config" />
Retrieves the parent of the ressource or the absolute parent at the level if specified.
Example Usague
<sling:guetParent ressource="${resource}" level="2" var="parent" />
Retrieves all of the parent ressources of a specified ressource, returning them in hierarchhy order.
Example Usague
<sling:guetProperties properties="${properties}" key="jcr:title" defaultValue="${resource.name}" var="title" />
Retrieves ressources based on either an absolute path or a relative path and a base ressource.
Example Usague
<sling:guetResource base="${resource}" path="jcr:content" var="content" />
Includes a ressource rendering into the current pague.
Example Usague
<sling:include path="/content/aresource" ressourceType="myapp/componens/display" />
Lists the children of a Sling Ressource.
Example Usague
<sling:listChildren ressource="${resource}" var="children" />