Ich verwende Play-Framework mit Reactive Mongo-Treibern. Für reaktive Mongo BSONObjectId
in unserer Routen-Datei Handhabung erschaffe ich folgende Bindemittel:Play-Framework: Parameter companyId kann nicht als BSONObjectID analysiert werden: falsche ObjectId
object StringToBSONObjectIdBinder {
/* This is for Path Parameter*/
implicit object pathBindableBSONObjectID extends play.api.mvc.PathBindable.Parsing[BSONObjectID](
BSONObjectID(_), _.stringify,
(key: String, e: Exception) =>
"Cannot parse parameter %s as BSONObjectID: %s".format(key, e.getMessage))
/* This is for query String*/
implicit object queryStringBindableBSONObjectID extends play.api.mvc.QueryStringBindable.Parsing[BSONObjectID](
BSONObjectID(_), _.stringify,
(key: String, e: Exception) =>
"Cannot parse parameter %s as BSONObjectID: %s".format(key, e.getMessage))
}
In Routing bin ich leicht Route meiner ID als Pfad param wie folgendes Beispiel:
GET /company/:companyId/users-detail controllers.CompanyController.userDetail(companyId: BSONObjectID)
Meine BSONObjectId
leicht kartiert mit meiner Anfrage Handler Pfadparam. Aber wenn ich verwende folgende Route nach oben Route wie folgt:
GET /company/detail controllers.CompanyController.companyDetail
ich immer bin nach BadRequest
:
For request 'GET /company/detail?t=1466673779753' [Cannot parse parameter companyId as BSONObjectID: wrong ObjectId: 'teams']
Aber wenn ich wechseln die Routen wie folgt:
GET /company/detail controllers.CompanyController.companyDetail
GET /company/:companyId/users-detail controllers.CompanyController.userDetail(companyId: BSONObjectID)
Dienstleistungen erfolgreich ausgeführt werden. Ich verstehe immer noch nicht, was das eigentliche Problem ist. Das ist Play-Framework-Problem, oder etwas mit meinem Code falsch?