正如此处所定义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)如何将错误消息设为可授权?
提前致谢
答案 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。然后将以下配置放入节点。
<?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;
以下是crxde lite中的配置组件
多数民众赞成。您不需要做任何其他事情。您将获得所有500或404错误的正确错误页面或消息
答案 2 :(得分:0)
问题是关于页面错误处理程序,答案是在:组件错误处理程序中提供的。这两件事完全不同。
CEH处理组件范围中的异常,其中EPH在请求范围内处理它 当组件发生故障并且CEH未处理异常并且响应写为500时,它将由EPH处理
答案 3 :(得分:0)
对于第4点),模板只有一个parsys。
是的,您必须配置组件并将其放置在parsys中,就像处理内容页面(在出现错误页面时会显示)一样。错误处理程序使您可以灵活地修改错误页面中显示的内容,从而保持可编辑性。您可以更改每个有效HTTP错误的错误页面的外观。
例如,当错误处理程序返回实际的404时,将显示我在content / error / 404.html页中创建的任何内容。
对于第5点),在/ content / myapp / en页面的页面属性中,我已将/ content / myapp / en / errors配置为错误页面。当我尝试访问URL /content/myapp/ent.html而不是/content/myapp/en.html时,要生成404错误,则会引发错误。
您在此处所做的错误是您尝试访问父页面的网址。 一种解决方案是将自定义错误页面置于高于您网站内容页面的水平。
您可以多次执行此操作。与在全局错误的单独错误页面中一样,对于myapp,另一些则针对myapp / en,等等。
因此,如果您看到页面属性中有一个选项卡,则可以在其中创建错误页面的根URL。可以根据需要利用它来提供不同的URL。
例如,
因此,我现在对错误页面有两种解释:一种用于content / myapp,另一种用于content / myapp / en
如下所示:
路径- /content/myapp/ent.html (Myapp):
配置节点:
显示差异的示例模板: