如何将 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);
我定义了一个 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);