【问题标题】:data-sly-resource error handling in sightly - AEM直观的数据-sly-resource错误处理 - AEM
【发布时间】:2017-03-03 06:19:54
【问题描述】:

data-sly-resource 标签允许通过以下方式引用另一个组件中的资源。

<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 而不是基于视觉的。

有没有办法一目了然地处理这个问题?

【问题讨论】:

    标签: aem sightly


    【解决方案1】:

    处理此问题的正确方法是通过 Use-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/Sightly,您需要传递路径。

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多