Oracle 如何使用ATG访问JSP层中的Endeca关键字重定向结果?
我正在使用Oracle ATG 10.1.2和Endeca 3.1.1开发一个web应用程序,但没有使用Endeca Experience Manager,我正在尝试使用关键字重定向功能 最终,我试图实现的是访问Endeca返回的关键字重定向信息(如果JSP层中有),这样我就可以将用户重定向到关键字重定向URL,和/或将该URL显示为呈现页面的一部分 为了从Endeca获得结果,我们使用的是/services/guidedsearch打包服务,如中的第51页所述 如果使用浏览器直接访问Endeca MDEX服务器的原始引导搜索输出,则可以在返回的XML中的Endeca:redirect属性中查看引导搜索条目和URL。我还可以在Endeca JSP参考应用程序orange应用程序中看到引导搜索条目,没有问题 但是,当我使用ATG InvokeAssembler水滴从Endeca获取结果时,响应中似乎没有包含Endeca:redirect条目。返回的ContentItem映射只有以下键: @类型、名称、导航、面包屑、结果列表、搜索调整、区域、endeca:siteRootPath、endeca:contentPath 没有像我在raw/services/guidedsearchxml输出中看到的那样的endeca:redirect键 以下是我的JSP代码的相关片段:Oracle 如何使用ATG访问JSP层中的Endeca关键字重定向结果?,oracle,atg,endeca,Oracle,Atg,Endeca,我正在使用Oracle ATG 10.1.2和Endeca 3.1.1开发一个web应用程序,但没有使用Endeca Experience Manager,我正在尝试使用关键字重定向功能 最终,我试图实现的是访问Endeca返回的关键字重定向信息(如果JSP层中有),这样我就可以将用户重定向到关键字重定向URL,和/或将该URL显示为呈现页面的一部分 为了从Endeca获得结果,我们使用的是/services/guidedsearch打包服务,如中的第51页所述 如果使用浏览器直接访问Endec
<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返回的关键字重定向信息?根据Oracle支持文档1530390.1,问题是在ATG 10.1.2中,InvokeAsembler水滴内部编码为使用不支持关键字重定向的Endeca ContentInclude对象,而不是使用RedirectAwareContentIncludeHandler,后者会
根据该知识文档,可以向Oracle支持部门请求修补程序p16099140来解决此问题。您也可以开发自己的RedirectAwareHandler,只需从补充列表中提取重定向即可
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
}