AEM::使用acs AEM commons包进行错误处理

AEM::使用acs AEM commons包进行错误处理,aem,Aem,根据这里的定义,我正在尝试为我的应用程序配置错误页面。以下是我所做的: 1) 在页面上定义的/apps/sling/servlet/errorhandler处创建了404.jsp和default.jsp 2) 将以下小部件添加到“高级”选项卡: <errorpages jcr:primaryType="cq:Widget" path="/apps/acs-commons/components/utilities/errorpagehandler/dialog/errorpa

根据这里的定义,我正在尝试为我的应用程序配置错误页面。以下是我所做的:

1) 在页面上定义的/apps/sling/servlet/errorhandler处创建了404.jsp和default.jsp

2) 将以下小部件添加到“高级”选项卡:

<errorpages
    jcr:primaryType="cq:Widget"
    path="/apps/acs-commons/components/utilities/errorpagehandler/dialog/errorpages.infinity.json"
    xtype="cqinclude"/>
不知道如何才能得到视频中显示的漂亮页面

5) 如何使错误消息可编写


提前感谢

无需遵循这么多步骤。带有错误处理程序的ACS commons包作为包提供。从中下载此包

文件名为-->acs-aem-commons-content-1.9.6.zip(2.3 MB)。 然后,只需在/apps/myapp/config中使用创建sling:OsgiConfig节点 名称-->com.adobe.acs.commons.wcm.impl.ComponentErrorHandlerImpl。然后将以下配置放入节点中


问题是关于页面错误处理程序的,答案在:组件错误处理程序中提供。这两件事完全不同

CEH在组件范围内处理异常,而as EPH在请求范围内处理异常
当组件发生故障且CEH未处理异常且响应写为500时,将由EPH处理,正如您在页面/content/myapp/en的页面属性的第5步中所说,您已将/content/myapp/en/errors配置为错误页面。此错误页面适用于此路径/content/myapp/en下的子页面。在您的情况下,它将适用于/content/myapp/en/*.html下的所有孩子 例如,它适用于/content/myapp/en/{invalidurl}.html

第4点)模板只有一个parsys

是的,您必须配置组件并将其放置在parsys中,就像您在出现错误页面时显示的内容页面一样。错误处理程序使您能够灵活地修改错误页面中显示的内容,使其保持可编写性。您可以为每个有效的HTTP错误更改错误页面的外观

例如,当errorhandler返回实际的404时,我在content/error/404.html页面中创建的任何内容都会显示出来

如果URL无效:

对于第5点),在页面/content/myapp/en的页面属性中,我将/content/myapp/en/errors配置为错误页面。当我尝试访问URL/content/myapp/ent.html而不是/content/myapp/en.html时,要生成404错误,它会抛出一个错误

您在此处所犯的错误是试图访问父页面url。 一种解决方案是将自定义错误页面放置在高于网站内容页面的级别

你可以多次这样做。正如在“为全局错误保留单独的错误页”中一样,其他一些错误页用于myapp,其他一些错误页用于myapp/en,依此类推

因此,如果您看到页面属性中有一个选项卡,您可以在其中创建错误页面根url。这可以根据需要提供不同的URL

比如说,

  • 如果您想要/content/myapp/ent.html的错误页面,那么除了content/myapp/en中的错误处理程序页面之外,还需要在content/myapp中放置一组单独的错误处理程序页面
  • 然后转到myapp.html,页面内属性将错误页面url覆盖为content/myapp/error。
  • 每当您需要一个单独的错误页面url时,为每个父级编写页面属性中的url
  • 现在我有两个错误页面的格式副本:一个用于content/myapp,另一个用于content/myapp/en

    如下图所示:

    路径-/content/test.html(全局)

    路径-/content/myapp/ent.html(myapp):

    配置节点:

    显示差异的示例模板:

    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
        jcr:primaryType="sling:OsgiConfig"
        prop.enabled="{Boolean}true"
        prop.error-page.fallback-name="500"
        prop.error-page.system-path="/content/error"
        prop.error-page.extension="html"
        ttl="{Long}300"/>
    
     No resource found
    
    Cannot serve request to /content/myapp/ent.html in /apps/sling/servlet/errorhandler/404.jsp