视图中的数据 - 资源错误处理 - AEM

问题描述:

data-sly-resource标记允许以下面的方式引用另一个组件中的资源。视图中的数据 - 资源错误处理 - AEM

<article data-sly-resource="path/to/resource"></article> 

我们有path/to/resource被内容作者视为对话框的一部分。如果内容作者选择不存在的路径,则内容作者无法访问页面,导致HTTP 500错误,并且没有其他方法可以在不去CRX的情况下进行更正。在不能访问CRX的环境中,我们无法删除不正确的节点。异常日志中是

Caused by: org.apache.sling.scripting.sightly.SightlyException: org.apache.sling.api.resource.ResourceNotFoundException: No resource found 
at com.adobe.cq.sightly.WCMScriptHelper.includeResource(WCMScriptHelper.java:143) 
at com.adobe.cq.sightly.WCMScriptHelper.includeResource(WCMScriptHelper.java:86) 
at com.adobe.cq.sightly.internal.extensions.ResourceExtension.call(ResourceExtension.java:99) 
at org.apache.sling.scripting.sightly.impl.engine.runtime.RenderContextImpl.call(RenderContextImpl.java:89) 

的开箱reference component(/libs/foundation/components/reference/reference.jsp)的由具有catch块处理这一点,内容创作者可以正确的路径。但这是基于JSP而不是基于视觉的。

有没有办法在视力中处理这个问题?

来处理这个正确的方法是通过使用的API,对象将尝试找到资源和处理异常:

<article data-sly-use.helper="myHelper" data-sly-test="${helper.resource}" data-sly-resource="${helper.resource}"></article> 

SLING-5811开始,通过实际的org.apache.sling.api.resource.Resourcedata-sly-resource是可能的,对于旧版本的HTL /视觉,您将需要传递路径。

+0

可能是创建自定义标签也会有所帮助。但它似乎[这是不允许](http://stackoverflow.com/questions/36335327/aem-sightly-is-it-possible-to-create-custom-data-sly-attributes) –

试试这个语法,路径应在EL表达式给出:

<article data-sly-resource="${ @ path='path/to/resource'}"></article> 
+0