I\'m trying to define an optional query parameter that will map to a Long
, but will be null
when it is not present in the URL:
GET
Remember that the optional query parameter in your route is of type scala.Long
, not java.lang.Long
. Scala's Long type is equivalent to Java's primitive long
, and cannot be assigned a value of null
.
Changing id
to be of type java.lang.Long
should fix the compilation error, and is perhaps the simplest way to resolve your issue:
GET /foo controller.Foo.index(id: java.lang.Long ?= null)
You could also try wrapping id
in a Scala Option
, seeing as this is the recommended way in Scala of handling optional values. However I don't think that Play will map an optional Scala Long to an optional Java Long (or vice versa). You'll either have to have a Java type in your route:
GET /foo controller.Foo.index(id: Option[java.lang.Long])
public static Result index(final Option id) {
if (!id.isDefined()) {...}
...
}
Or a Scala type in your Java code:
GET /foo controller.Foo.index(id: Option[Long])
public static Result index(final Option id) {
if (!id.isDefined()) {...}
...
}