视图中的数据 - 资源错误处理 - 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.Resource
到data-sly-resource
是可能的,对于旧版本的HTL /视觉,您将需要传递路径。
答
试试这个语法,路径应在EL表达式给出:
<article data-sly-resource="${ @ path='path/to/resource'}"></article>
+0
–
可能是创建自定义标签也会有所帮助。但它似乎[这是不允许](http://stackoverflow.com/questions/36335327/aem-sightly-is-it-possible-to-create-custom-data-sly-attributes) –