0

我有登录页面和仪表板页面。

登录过程完成后,将显示仪表板页面(使用导航规则)。

  <navigation-rule>
        <from-view-id>/login.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>dashboard</from-outcome>
            <to-view-id>/viewp/dashboard.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>

我有所有请求的过滤器映射。

这是我的场景,我的仪表板页面上有客户端轮询器。当服务器重新启动时,轮询器发送请求,过滤器将解释该请求。

在过滤器内部我有类似的逻辑

If(url.contains("login.xhtml))
{
//dofilter
}else
{
// redirect to login.
}

但不知何故,这不是重定向。

我的一个观察结果是,即使我在仪表板页面上登录后,我的 URL 仍然像mydomain/login.xhtml. 我认为因为浏览器中的 URL 是mydomain/login.xhtmlresponse.redirect("mydomain/login.xhtml")不起作用。有什么建议么?

谢谢,

4

1 回答 1

1

轮询器是由 JavaScript/Ajax 执行的,对吧?好吧,如果服务器返回 302 而不是 200,您必须检查 JavaScript/Ajax 并进行相应处理。浏览器本身不会对返回的 JavaScript/Ajax 响应自动执行此操作,而只会对同步请求的响应执行此操作。

您可以window.location在 JavaScript 中使用来执行“重定向”。例如

if (ajaxResponseStatus == 302) {
    window.location = newURL;
}
于 2012-06-06T23:06:57.407 回答