是否可以根据页面属性

时间:2015-06-21 00:07:16

标签: java iframe aem sling sightly

在AEM Sightly组件中,它有两种模式;画廊和目录。目录视图使用选择器(/apps/mi-proj/people_list/directory.html)实现。

默认情况下,组件以图库模式呈现(使用people_list / people_list.html)。用户希望能够选择默认显示哪个视图。在任何一种情况下,用户都可以在视图之间切换。

假设内容吊索的示例路径:resourceType = people_list:

/content/mi-proj/people.html (people_list.html)
/content/mi-proj/people.gallery.html (people_list.html)
/content/mi-proj/people.directory.html (directory.html)

用户在组件对话框中有一个复选框,用于选择目录作为默认目录。两个视图都使用相同的WCMUse Java类,如果设置了默认目录属性,则调用this.getResponse()。sendRedirect(redirectPath)。

private void forwardToDirectory(String selector){
    String redirectPath;
    redirectPath = String.format("%s.%s.html", this.getCurrentPage().getPath(), selector);          
    try {
        this.getResponse().sendRedirect(redirectPath);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

重定向在我的localhost和dev层上运行正常。但是在AEM的内容查找页面(cf#)中呈现页面时会出现问题,     /cf#/content/mi-proj/people.html

它将页面放在一个大的iframe中。由于某种原因,iframe方案(http)与重定向的请求(https)不匹配,因此浏览器抛出异常(我已尝试将其强制为https,但仍然无法说https方案没有&#39 ; t匹配iframe方案,数据)...似乎我需要解决这个问题并取消重定向......

我还是不想强迫302重定向,并且更愿意在后端处理它...这是我想写的过程...

if directoryDefault == true || selector == 'directory'
    use directory.html
else 
    people_list.html

我唯一的想法是重构/重命名脚本(称为gllry.html和drcty.html)。检查people_list.html中的选择器,然后data-sly-包含适当的脚本。但是,这并没有为选择器使用吊索分辨率,我也可以切换到查询参数......

所以我的问题是,即使请求没有选择器,有没有办法让组件使用选择器脚本?

1 个答案:

答案 0 :(得分:1)

我认为你的想法是在正确的轨道上,基于我的假设“用户”(来自“用户希望能够选择默认显示哪个视图”)是指作者而不是最终用户该网站。

在people_list.html中,检查属性并在目录模式下呈现(如果通过包含directory.html设置)。否则,请包含gallery.html:

/content/mi-proj/people.html (gallery.html or directory.html)
/content/mi-proj/people.gallery.html (gallery.html)
/content/mi-proj/people.directory.html (directory.html)

您仍然可以使用选择器访问任一视图,无论属性值如何:

join table
==========
test_id configuration_id (spanning unique constraint)
------- ----------------
44570   18
44570   20
44569   18
44569   20
44569   20
44568   18
44568   20
44567   18

configurations table
====================
configuration_id
----------------
18
20

有关何时在选择器上使用查询参数的详细信息,请查看此帖子:http://www.citytechinc.com/us/en/blog/2013/08/apache-sling-selectors-request-parameters.html