1

我正在使用 Oracle ATG 10.1.2 和 Endeca 3.1.1(没有 Endeca Experience Manager)开发 Web 应用程序,并试图让关键字重定向功能正常工作。

最终,我想要完成的是在我的 JSP 层中访问从 Endeca(如果有的话)返回的关键字重定向信息,因此我可以将用户重定向到关键字重定向 URL,和/或显示该 URL作为渲染页面的一部分。

为了从 Endeca 获得结果,我们正在使用/services/guidedsearch打包服务(如汇编程序应用程序开发人员指南 (v3.1.1) 的p51 中所述。

如果我使用我的浏览器直接访问来自 Endeca MDEX 服务器的原始引导式搜索输出,我可以endeca:redirect在返回的 XML 的属性中看到我的引导式搜索条目和 URL。我还可以在 Endeca JSP 参考应用程序(“橙色应用程序”)中毫无问题地看到引导式搜索条目。

但是,当我使用 ATGInvokeAssembler液滴从 Endeca 获取结果时,endeca:redirect响应中似乎没有包含该条目。返回的 ContentItem 映射仅具有以下键:

@type, name, navigation, breadcrumbs, resultsList, searchAdjustments, zones, endeca:siteRootPath,endeca:contentPath

在原始XML 输出中没有endeca:redirect我可以看到的键。/services/guidedsearch

这是我的 JSP 代码的相关片段:

<dsp:droplet name="/atg/endeca/assembler/droplet/InvokeAssembler">
  <dsp:param name="includePath" value="/services/guidedsearch" />  
  <dsp:oparam name="output">
    <dsp:getvalueof param="contentItem" var="contentItem" vartype="com.endeca.infront.assembler.ContentItem" />
  </dsp:oparam>
</dsp:droplet>

如何访问从 Endeca 返回的关键字重定向信息?

4

2 回答 2

2

您也可以开发自己的RedirectAwareHandler并简单地从SupplementList.

public ContentItem process(ContentItem pContentItem) throws CartridgeHandlerException {
    ENEQueryResults executeMdexRequest = executeMdexRequest(mMdexRequest);
    Object redirectURL = null;
    if (executeMdexRequest.getNavigation() != null && executeMdexRequest.getNavigation().getSupplements() != null){
        SupplementList supplements =  executeMdexRequest.getNavigation().getSupplements();
        Supplement supplement = null;

        for (Object object : supplements) {
            if (object instanceof Supplement) {
                supplement = (Supplement) object;
                if (supplement.getProperties() != null) {
                    redirectURL = supplement.getProperties().get("DGraph.KeywordRedirectUrl");
                    if (redirectURL != null) {
                        break;
                    }
                }
            }
        }
    }

//And now do your redirect
}
于 2013-10-11T12:37:21.787 回答
1

根据 Oracle Support doc 1530390.1,问题是在 ATG 10.1.2 中,InvokeAssembler 液滴在内部编码为使用 Endeca ContentInclude 对象(不支持关键字重定向),而不是使用 RedirectAwareContentIncludeHandler(支持)。

根据该知识文档,可以向 Oracle 支持请求修补程序 p16099140 来解决此问题。

于 2013-10-11T12:18:04.567 回答