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