[ 
https://issues.apache.org/jira/browse/SLING-6354?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15715074#comment-15715074
 ] 

Justin Edelson commented on SLING-6354:
---------------------------------------

One additional note on the implementation - with this change, Sling Model 
Exporter is treated as a Script Engine for the purposes of accessing 
BindingsValuesProviders (although there is no actual ScriptEngineFactory 
service registered and Sling Models doesn't appear on the Script Engines web 
console tab since it isn't directly usable). Should someone want to target a 
BVP just at Sling Models Exporter, they should use the name 
"sling-models-exporter".

Note that due to the way BVPs work, the same Sling Model class may not have 
access to the same Bindings values in different script engines and the 
Exporter. This is already the case in that you can have different Bindings 
between scripting languages, i.e. JSPs may have different Bindings values than 
HTL scripts or Thymeleaf scripts (and vice versa).

> Make exporter servlet script-bindings aware
> -------------------------------------------
>
>                 Key: SLING-6354
>                 URL: https://issues.apache.org/jira/browse/SLING-6354
>             Project: Sling
>          Issue Type: Bug
>          Components: Extensions
>    Affects Versions: Sling Models Impl 1.3.4
>            Reporter: Burkhard Pauli
>            Assignee: Justin Edelson
>             Fix For: Sling Models Impl 1.3.6
>
>
> The current exporter servlet [0] doesn't expose scripting variables. 
> If a field for the related Sling Model should be injected via the 
> ScriptVariable annotation [1] and the field is not optional, the model can't 
> be initialized and the request to exporter servlet fails.
> Example:
> {code}
> @Model(adaptables = SlingHttpServletRequest.class, adapters = 
> TestModel.class, resourceType = "core/components/test")
> @Exporter(name = "jackson", extensions = "json")
> public class TestModel {
>     @ScriptVariable
>     private Page currentPage;
>     public String getName() {
>         return currentPage.getName();
>     }
> }
> {code}
> [0] 
> https://github.com/apache/sling/blob/trunk/bundles/extensions/models/impl/src/main/java/org/apache/sling/models/impl/ExportServlet.java
> [1] 
> https://github.com/apache/sling/blob/trunk/bundles/extensions/models/api/src/main/java/org/apache/sling/models/annotations/injectorspecific/ScriptVariable.java



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to