如何在 Play 自己的代码中使用 Status
How to use Status in own code in Play
播放版本为 2.6.12。
我想在我自己的代码中使用 Results.Status,例如
// in my code somewhere
def doSomething(status:Results.Status) { ....}
// in controller
doSomething(Ok) <---- results in error
但是我在controller里面的Ok好像不是Results.Status
类型
[error] found : MyController.this.Status
[error] required: play.api.mvc.Results.Status
关于如何在我自己的控制器外部代码中使用 Status 的任何想法?
帮助代码是
import org.scalactic.{Bad, Good, Or}
import play.api.libs.json.Json
import play.api.mvc.Result
import play.api.mvc.Results.Status
object Helper {
def toResult[T](r:Or[T, Result], s:Status):Result = {
r match {
case Good(entity) => s(Json.toJson(entity))
case Bad(badRequest) => badRequest
}
}
}
控制器代码定义正在扩展
class AuthBaseController @Inject()(acc: AuthControllerComponents) extends BaseController with AuthRequestMarkerContext {
BaseController 通向
trait ControllerHelpers extends Results with HttpProtocol with Status with HeaderNames with ContentTypes with RequestExtractors with Rendering with RequestImplicits
扩展状态。
您始终可以显式传递请求的类型:
doSomething(play.api.mvc.Results.Ok)
我想如果你只是在你的控制器中导入play.api.mvc.Results._
,你会发生导入冲突(你仍然可以尝试),但只是导入play.api.mvc.Results
,然后像这样使用它
doSomething(Results.Ok)
应该可以。
[error] found : MyController.this.Status
[error] required: play.api.mvc.Results.Status
状态是一种取决于控制器的特定类型。要拥有某种类型的函数,它不关心父类型,您可以像这样使用 # 符号:
def doSomething(status:Results#Status) { ....}
播放版本为 2.6.12。
我想在我自己的代码中使用 Results.Status,例如
// in my code somewhere
def doSomething(status:Results.Status) { ....}
// in controller
doSomething(Ok) <---- results in error
但是我在controller里面的Ok好像不是Results.Status
类型[error] found : MyController.this.Status
[error] required: play.api.mvc.Results.Status
关于如何在我自己的控制器外部代码中使用 Status 的任何想法?
帮助代码是
import org.scalactic.{Bad, Good, Or}
import play.api.libs.json.Json
import play.api.mvc.Result
import play.api.mvc.Results.Status
object Helper {
def toResult[T](r:Or[T, Result], s:Status):Result = {
r match {
case Good(entity) => s(Json.toJson(entity))
case Bad(badRequest) => badRequest
}
}
}
控制器代码定义正在扩展
class AuthBaseController @Inject()(acc: AuthControllerComponents) extends BaseController with AuthRequestMarkerContext {
BaseController 通向
trait ControllerHelpers extends Results with HttpProtocol with Status with HeaderNames with ContentTypes with RequestExtractors with Rendering with RequestImplicits
扩展状态。
您始终可以显式传递请求的类型:
doSomething(play.api.mvc.Results.Ok)
我想如果你只是在你的控制器中导入play.api.mvc.Results._
,你会发生导入冲突(你仍然可以尝试),但只是导入play.api.mvc.Results
,然后像这样使用它
doSomething(Results.Ok)
应该可以。
[error] found : MyController.this.Status
[error] required: play.api.mvc.Results.Status
状态是一种取决于控制器的特定类型。要拥有某种类型的函数,它不关心父类型,您可以像这样使用 # 符号:
def doSomething(status:Results#Status) { ....}