Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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
Scala 带有替代项的重载方法值:在使用请求调用Call.absoluteURL时_Scala_Playframework_Playframework 2.3 - Fatal编程技术网

Scala 带有替代项的重载方法值:在使用请求调用Call.absoluteURL时

Scala 带有替代项的重载方法值:在使用请求调用Call.absoluteURL时,scala,playframework,playframework-2.3,Scala,Playframework,Playframework 2.3,这是我的密码 class AuthAction(callbackUri:String) extends ActionBuilder[UserRequest] with ActionRefiner[Request,UserRequest]{ override def refine[A](request: Request[A]): Future[Either[Result,UserRequest[A]]] = { val redirectUri = routes.Applic

这是我的密码

  class AuthAction(callbackUri:String) extends ActionBuilder[UserRequest] with ActionRefiner[Request,UserRequest]{
    override def refine[A](request: Request[A]): Future[Either[Result,UserRequest[A]]] = {
      val redirectUri = routes.Application.callback(None, None).absoluteURL(request)
      getUser(request) match {
        case Some(user) => Future.successful(Right(new UserRequest(user,request))) 
        case _ => Future.successful(Left(oauthLogin(callbackUri,redirectUri)(request)))
      }

  }
}
当我试图编译这段代码时,我得到以下错误

[error]   (secure: Boolean)(implicit request: play.api.mvc.RequestHeader)String <and>
[error]   (x$1: play.mvc.Http.Request)String
[error]  cannot be applied to (play.api.mvc.Request[A])
[error]       val redirectUri = routes.Application.callback(None, None).absoluteURL(request)
[错误](安全:布尔)(隐式请求:play.api.mvc.RequestHeader)字符串
[错误](x$1:play.mvc.Http.Request)字符串
[错误]无法应用于(play.api.mvc.Request[A])
[错误]val redirectUri=routes.Application.callback(无,无)。绝对URL(请求)

这与隐式参数有关吗?这里发生了什么?

它需要
play.mvc.Http.Request
,而您正试图传入
play.api.mvc.Request
。它们不兼容

编辑:要回答您在评论中提出的问题。。。 我不确定你说的是哪个参数。此函数有两种风格:

那个,你好像想打电话给-
absoluteURL(请求:play.mvc.Http.request)
-不接受任何隐式参数,它只需要正确类型的
请求

另一个-
absoluteURL(secure:Boolean)(隐式请求:play.api.mvc.RequestHeader)
-有一个隐式参数,它的类型也与您的不同(
RequestHeader
,而不是
request

如果将包含此
requestHeader
的变量声明为
implicit
,并且它在范围内,则可以调用后一个函数,而无需显式指定它:

implicit val requestHeader = createMyRequestHeader()
routes.Application.callback(None, None).absoluteURL(true)
或者,您仍然可以像使用常规参数一样显式地传递它(在这种情况下,您不需要将其声明为隐式):


是的,你说得对。非常感谢。这是我第二次混淆java类。如何在此处隐式传递请求参数?我编辑了我的答案以添加对此问题的响应。
routes.Application.callback(None, None).absoluteURL(true)(requestHeader)