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

时间:2015-03-18 01:10:28

标签: cq5 aem

正如此处所定义http://adobe-consulting-services.github.io/acs-aem-commons/features/errorpagehandler.html我正在尝试为我的应用程序设置错误页面。这就是我所做的:

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"/>

3)创建/apps//config/com.adobe.acs.commons.errorpagehandler.impl.ErrorPageHandlerImpl.xml

具有以下属性:

<?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"/>

4)使用新模板创建/ content / myapp / en / errors。模板只有一个parsys。在/ content / myapp / en / errors中,我使用相同的模板创建了页面404和500。在视频中显示,当发言者打开从siteadmin在geometrytrixx下创建的页面404.html和500.html时,他能够看到相应的错误消息。我无法理解的是,如果我的模板只包含一个解析器,404和500页面将如何显示错误消息。从哪里生成这些消息?我在这里错过了什么吗?我是否必须创建任何组件?

5)在页面/ content / myapp / en的页面属性中,我已将/ content / myapp / en / errors配置为错误页面。要在我尝试访问网址/content/myapp/ent.html而不是/content/myapp/en.html时生成404错误,它会抛出

 No resource found

Cannot serve request to /content/myapp/ent.html in /apps/sling/servlet/errorhandler/404.jsp

不知道如何让他看起来很漂亮,如视频中所示。

5)如何将错误消息设为可授权?

提前致谢

4 个答案:

答案 0 :(得分:1)

正如您在第5步中所述,在/ content / myapp / en页面的页面属性中,您已将/ content / myapp / en / errors配置为错误页面。此错误页面适用于此路径/ content / myapp / en下的子页面。就您而言,它适用于/content/myapp/en/*.html下的所有孩子 例如它将适用于/content/myapp/en/{invalidurl}.html

答案 1 :(得分:0)

无需遵循这么多步骤。具有错误处理程序的ACS commons包作为包提供。从This ACS commons git hub site

下载此软件包

该文件的名称是 - &gt; acs-aem-commons-content-1.9.6.zip(2.3 MB)。 然后在/ apps / myapp / config中创建sling:OsgiConfig节点  名字 - &gt; com.adobe.acs.commons.wcm.impl.ComponentErrorHandlerImpl。然后将以下配置放入节点。

&#13;
&#13;
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:cq="http://www.day.com/jcr/cq/1.0"
    xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
    jcr:primaryType="sling:OsgiConfig"
    prop.edit.enabled="{Boolean}true"
    prop.edit.html="/apps/acs-commons/components/utilities/component-error-handler/edit.html"
    prop.preview.enabled="{Boolean}false"
    prop.preview.html="/apps/acs-commons/components/utilities/component-error-handler/preview.html"
    prop.publish.enabled="{Boolean}false"
    prop.publish.html="/dev/null"
	/>
&#13;
&#13;
&#13;

以下是crxde lite中的配置组件 after the configuration you can this is how crxde lite looks

多数民众赞成。您不需要做任何其他事情。您将获得所有500或404错误的正确错误页面或消息

答案 2 :(得分:0)

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

CEH处理组件范围中的异常,其中EPH在请求范围内处理它 当组件发生故障并且CEH未处理异常并且响应写为500时,它将由EPH处理

答案 3 :(得分:0)

对于第4点),模板只有一个parsys。

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

例如,当错误处理程序返回实际的404时,将显示我在content / error / 404.html页中创建的任何内容。

enter image description here

如果网址无效: enter image description here

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

您在此处所做的错误是您尝试访问父页面的网址。 一种解决方案是将自定义错误页面置于高于您网站内容页面的水平。

您可以多次执行此操作。与在全局错误的单独错误页面中一样,对于myapp,另一些则针对myapp / en,等等。

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

例如,

  1. 如果您想要/content/myapp/ent.html的错误页面,则除了在content / myapp / en上的页面之外,还可以在content / myapp上放置单独的错误处理程序页面集。
  2. 然后转到 myapp.html ,然后在“页面属性”中将错误页面的网址覆盖为content / myapp / error。 enter image description here
  3. 对于每个父级,只要您需要单独的错误页面网址作者,就可以在页面属性中创建。

因此,我现在对错误页面有两种解释:一种用于content / myapp,另一种用于content / myapp / en

如下所示:

路径- /content/test.html (全局) enter image description here

路径- /content/myapp/ent.html (Myapp): enter image description here

enter image description here

配置节点:

enter image description here

显示差异的示例模板:

enter image description here