How to handle optional query parameters in Play framework
playframework, playframework-2.0, scala
Solution
Encode your optional parameters as `Option[String]` (or `Option[java.util.Date]`, but you’ll have to implement your own `QueryStringBindable[Date]`):
def birthdays(from: Option[String], to: Option[String]) = Action {
// …
}
And declare the following route:
GET /birthday controllers.Application.birthday(from: Option[String], to: Option[String])
Problem
Lets say I have an already functioning Play 2.0 framework based application in Scala that serves a URL such as: http://localhost:9000/birthdays which responds with a listing of all known birthdays I now want to enhance this by adding the ability to restrict results with optional "from" (date) and "to" request params such as http://localhost:9000/birthdays?from=20120131&to=20120229 (dates here interpreted as yyyyMMdd) My question is how to handle the request param binding and interpretation in Play 2.0 with Scala, especially given that both of these params should be optional. Should these parameters be somehow expressed in the "routes" specification? Alternatively, should the responding Controller method pick apart the params from the request object somehow? Is there another way to do this?