【问题标题】:RESTlet redirect sending browser riap URIRESTlet 重定向发送浏览器 riap URI
【发布时间】:2013-09-17 17:22:04
【问题描述】:

我正在使用 RESTlet 处理来自浏览器的 PUT 请求,并且在 PUT 成功后,我想将浏览器重定向到不同的网页。

对我来说似乎是标准的 PUT->REDIRECT->GET,但我不知道如何在我的 RESTlet 资源中执行此操作。

这是我在 PUT 完成请求的工作后的代码:

getResponse().redirectSeeOther("/account");

但是这会导致浏览器获得:

Response Headers
Location    riap://application/account

当然,“riap”协议对浏览器毫无意义,“应用程序”不是服务器名称。似乎应该有一种方法可以将重定向发送回浏览器,而无需在我的 redirectSeeOther() 调用中构建整个 URL。构建 URL 似乎很容易出错。

有没有一种简单的重定向方法,无需从头开始构建整个 URL?

谢谢!

此致,

斯蒂芬·麦坎茨

【问题讨论】:

    标签: restlet


    【解决方案1】:

    虽然我不能 100% 确定您尝试在哪种类型的课程中执行此操作。

    试试:

    Reference reference = getRequest().getRootRef().clone().addSegment("account");
    redirectSeeOther(reference);
    

    我通常也将body设置为

    return new ReferenceList(Arrays.asList(reference)).getTextRepresentation();
    

    但这可能不是所有客户都需要的,或者根本不需要。我通常会在扩展 ServerResource 的类 - Restlet(2.0.x 或 2.1.x)中使用这种样式。

    【讨论】:

    • 嗨 Caleryn,我最终得到了类似的结果:getResponse().redirectSeeOther(getRequest().getHostRef()+"/account"); 但是,我发现这不会满足我的特定需求,因为它是对 AJAX 调用的响应,所以我结束了将重定向放在 Javascript 中。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2013-09-24
    相关资源
    最近更新 更多