我想在我的控制器中作为查询参数接收一个过滤列表,这个过滤列表也是一个枚举类型。我使用的是Scala语言的Play框架。问题是,IDE不认可将枚举类型作为查询参数。因此,我在路由文件中有如下代码:
GET /service-orders/ controllers.ServiceOrdersController.listServiceOrders(status: ServiceStatus)
我的枚举文件:
object ServiceStatus extends Enumeration {
type ServiceStatus = Value
val Pending = Value("pending")
val Started = Value("started")
val Completed = Value("completed")
val Error = Value("error")
}
在 build.sbt 文件中,我尝试使用以下内容来向路由文件注入包
routesImport ++= Seq(
"serviceOrders.models.ServiceStatus"
),
我试过很多方法,但都没有成功。我在某个地方读到可以使用QueryStringBindable
函数,但我无法让它正常工作...请问你们能帮我解决这个问题吗?
编辑:顺便问一下,有没有一种方法可以在不进行任何操作的情况下检查状态是否包含在一系列筛选器中?
.filter {
serviceOrder =>
status.map(serviceOrder.serviceStatus === _)
.reduceOption(_ || _)
.getOrElse(true: Rep[Boolean])
}
这是我能想到的唯一方法,通过从 API 收到的查询参数列表来过滤状态。