如何将 Alfresco 网络脚本重定向到不同的响应页面

How to redirect an Alfresco webscript to a different response page

我定义了一个 Alfresco Repo Webscript,在 Java 中实现,它将模板文件夹结构复制到站点的文档存储库中。

此网络脚本的 Freemarker HTML 模板很简单

<html>
    <body>
        <p>Your request was successful</p>
    </body>
</html>

但我实际上并不希望将其显示给用户。我希望响应页面成为站点的文档存储库。

所以在我的 Java webscript 代码中,我添加了这一行

@Override
protected Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache) {
    ...     
    status.setLocation("http://localhost:8081/share/page/site/my-site/documentlibrary");
    ...
}

我希望将响应重定向到 url,但上面的页面仍在呈现。

查看 DeclarativeWebScript 的代码(我的实现 class 继承自),我看到了这个

String location = status.getLocation();
if (location != null && location.length() > 0)
{
  if (logger.isDebugEnabled())
  logger.debug("Setting location to " + location);
  res.setHeader(WebScriptResponse.HEADER_LOCATION, location);
}

我缺少什么才能使重定向正常工作?

将评论提升为答案 - 您还需要设置状态重定向代码。 this somewhat hard to find Alfresco document on Java WebScripts and error handling

中对此进行了介绍

您应该添加如下内容:

  status.setCode(Status.STATUS_MOVED_PERMANENTLY);

另见 Status object javadocs and DeclarativeWebScript