java - 将请求重定向到 Controller 中的特定操作 public F.Promise<SimpleResult> call(Http.Context ctx){}

标签 java http url redirect playframework-2.2

我正在使用 play 2.2.x 并且我正在做一个项目。我想在我的 AdminController 类中定义的某些操作(方法)之前检查管理员是否在 session 中。所以如果用户没有登录并尝试输入浏览器中的 adminpage url 他应该被重定向到一个特定的页面,比如 login.scala.html。

我的代码 ( Source )

 public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable {

        if (check if user is in session) {

              return delegate.call(ctx);
        } else {

            return redirect(routes.AdminController.login());
        }
    }

但是上面的代码给我一个不兼容的类型编译错误。

那么如何重定向 url 呢?

如有任何帮助,我们将不胜感激。

最佳答案

redirect 调用不返回 F.Promise,因此类型错误。您可以使用 pure 包装重定向调用:

public F.Promise<SimpleResult> call(Http.Context ctx) throws Throwable {
    if (/* your condition */) {
       return delegate.call(ctx);
    } else {
       return F.Promise.pure(redirect(routes.AdminController.login()));
    }
}

关于java - 将请求重定向到 Controller 中的特定操作 public F.Promise<SimpleResult> call(Http.Context ctx){},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27819768/

相关文章:

java - 如何让用java编写的服务只能处理来自定义的ip的请求?

java - 在 android.support.v7.widget.SearchView 的关闭监听器上

java - 解码对象数组和数组

java - 无法使用 Jar 文件找到或加载主类。原因是 bcprov-jdk15-133

http - 将子目录 HTTP 重定向到同一子目录 HTTPS

javascript - 在azure函数NodeJs Http触发器中获取请求 header

ruby-on-rails - rails 3,在link_to中如何指定目标和可选的url参数?

php - 将包含普通文本的字符串转换为 URL 字符串的函数

java - 在集合之间复制顺序

swift - URL 在 Swift 3 中始终为 nil