Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将请求重定向到public F.Promise内部控制器中的特定操作<;SimpleResult>;调用(Http.Context ctx){}_Java_Http_Url_Redirect_Playframework 2.2 - Fatal编程技术网

Java 将请求重定向到public F.Promise内部控制器中的特定操作<;SimpleResult>;调用(Http.Context ctx){}

Java 将请求重定向到public F.Promise内部控制器中的特定操作<;SimpleResult>;调用(Http.Context ctx){},java,http,url,redirect,playframework-2.2,Java,Http,Url,Redirect,Playframework 2.2,我正在使用play 2.2.x,我正在处理一个项目。我想在AdminController类中定义的某些操作(方法)之前检查admin是否处于会话中。因此,如果用户未登录并尝试在浏览器中输入adminpage url,则应将其重定向到特定页面,如login.scala.html 我的代码() public F.Promise调用(Http.Context ctx)抛出Throwable{ if(检查用户是否在会话中){ 返回委托呼叫(ctx); }否则{ 返回重定向(routes.AdminCon

我正在使用play 2.2.x,我正在处理一个项目。我想在AdminController类中定义的某些操作(方法)之前检查admin是否处于会话中。因此,如果用户未登录并尝试在浏览器中输入adminpage url,则应将其重定向到特定页面,如login.scala.html

我的代码()

public F.Promise调用(Http.Context ctx)抛出Throwable{
if(检查用户是否在会话中){
返回委托呼叫(ctx);
}否则{
返回重定向(routes.AdminController.login());
}
}
但是上面的代码给了我一个不兼容类型的编译错误

那个么我如何重定向url呢


任何帮助都将不胜感激。

重定向调用不会返回
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()));
    }
}
public F.Promise调用(Http.Context ctx)抛出Throwable{
如果(/*您的情况*/){
返回委托呼叫(ctx);
}否则{
返回F.Promise.pure(重定向(routes.AdminController.login());
}
}
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()));
    }
}