Apache
Home » Documentation » Bundles » Sling Scripting

JSP Scripting Engine

The Apache Sling JSP Scripting Engine is implemented by the org.apache.sling.scripting.jsp bundle, based on the Jasper 2 JSP engine.

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 supports the use of Sling as an application in JSP pages. The Sling Taglib provides the ability to invoke JSP scripts, include Resources and interact with the Sling Repository, all with JSP tags and Expression Language (EL) functions.

Use

Using the Sling Taglib in a JSP page is as simple as including the Taglib include in your JSP, with the correct URI for the version of the Sling Taglib installed.

<%@taglib prefix="sling" uri="http://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 leverage the Sling Taglib.

Taglib Versions

There have been a number of releases of the Sling Taglibs, including versions with different URIs.

Taglib Version Bundle Version URI
1.0 2.0.6 http://sling.apache.org/taglibs/sling/1.0
1.1 2.1.0 http://sling.apache.org/taglibs/sling/1.1
1.2 2.1.8 http://sling.apache.org/taglibs/sling/1.2
1.3 2.2.0 http://sling.apache.org/taglibs/sling

All releases from 1.3 onward are expected to use the URI http://sling.apache.org/taglibs/sling to ensure ease of upgrading to newer versions of the Taglib.

Expression Language Functions

The Sling Taglib includes a number of Expression Language Functions which can be used to access the repository.

adaptTo

Adapts an Adaptable to another class.

Example Usage

<c:set var="myProperties" value="${sling:adaptTo(resource,'org.apache.sling.api.resource.ValueMap')}" />

encode

Writes properly Cross Site Scripting (XSS) encoded text to the response using the OWASP ESAPI. Supports a number of encoding modes.

Example Usage

${sling:encode('<script>alert("Bad Stuff!");</script>','HTML')}

findResources

Searches for resources using the given query formulated in the given language.

Example Usage

<c:forEach var="found" items="${sling:findResources(resourceResolver,'/jcr:root//*[jcr:contains(., 'Sling')] order by @jcr:score','xpath')">
    <li>${found.path}</li>
</c:forEach>

getRelativeResource

Gets the resource at the relative path to the provided resource.

Example Usage

<c:set var="content" value="${sling:getRelativeResource(resource,'jcr:content')}" />

getResource

Method allow for the retrieval of resources.

Example Usage

<c:set var="content" value="${sling:getResource(resourceResolver,'/content')}" />

getValue

Gets 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.

Example Usage

<c:set var="content" value="${sling:getValue(properties,'jcr:title',resource.name)}" />

listChildren

Method for allowing the invocation of the Sling Resource listChildren method.

Example Usage

<c:forEach var="child" items="${sling:listChildren(resource)">
    <li>${child.path}</li>
</c:forEach>

Tags

The Sling Taglib includes a number of Tags which can be used to access the repository, handle the inclusion of scripts and manage requests.

adaptTo

Adapts adaptables to objects of other types.

Example Usage

<sling:adaptTo adaptable="${resource}" adaptTo="org.apache.sling.api.resource.ValueMap" var="myProps" />

call

Execute a script.

Example Usage

<sling:call script="myscript.jsp" />

defineObjects

Defines regularly used scripting variables. By default the following scripting variables are defined through this tag:

See also Scripting variables in CMS

Example Usage

<sling:defineObjects />

encode

Writes properly Cross Site Scripting (XSS) encoded text to the response using the OWASP ESAPI. Supports a number of encoding modes.

Example Usage

<sling:encode value="<script>alert('Bad Stuff!');</script>" mode="HTML" />

eval

Evaluates a script invocation and includes the result in the current page.

Example Usage

<sling:eval script="myscript.jsp" />

findResources

Tag for searching for resources using the given query formulated in the given language.

Example Usage

<sling:findResources query="/jcr:root//*[jcr:contains(., 'Sling')] order by @jcr:score" language="xpath" var="resources" />

forward

Forwards a request to a resource rendering the current page

Example Usage

<sling:forward path="/content/aresource" resourceType="myapp/components/display" />

getProperty

Retrieves the value from the ValueMap, allowing for a default value or coercing the return value.

Example Usage

<sling:getProperties properties="${properties}" key="jcr:title" defaultValue="${resource.name}" var="title" />

getResource

Retrieves resources based on either an absolute path or a relative path and a base resource.

Example Usage

<sling:getResource base="${resource}" path="jcr:content" var="content" />

include

Includes a resource rendering into the current page.

Example Usage

<sling:include path="/content/aresource" resourceType="myapp/components/display" />

listChildren

Lists the children of a Sling Resource.

Example Usage

<sling:listChildren resource="${resource}" var="children" />
Rev. 1787476 by olli on Fri, 17 Mar 2017 18:45:13 +0000
Apache Sling, Sling, Apache, the Apache feather logo, and the Apache Sling project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.