Я хотел бы иметь java.sql.Date и Option [java.sql.Date] в моем проекте Play-scala в качестве параметра запроса-параметра, по умолчанию используется для платформы Play. Play-версия, которую я использую, - 2.4.3. У меня есть следующий (грубый) класс.Наличие пользовательского QueryStringBindable в области с Play 2.4.3
object CustomBinders extends {
val dateFormat = ISODateTimeFormat.date()
implicit def dateBinder: QueryStringBindable[Date] = new QueryStringBindable[Date] {
def bind(key: String, params: Map[String, Seq[String]]): Option[Either[String, Date]] = {
val dateString: Option[Seq[String]] = params.get(key)
try {
Some(Right(new Date(dateFormat.parseDateTime(dateString.get.head).getMillis)))
} catch {
case e: IllegalArgumentException => Option(Left(dateString.get.head))
}
}
def unbind(key: String, value: Date): String = {
dateFormat.print(value.getTime)
}
}
}
Тогда в Build.scala У меня есть
import play.sbt.routes.RoutesKeys
object Build extends Build {
RoutesKeys.routesImport += "binders.CustomBinders.dateBinder"
RoutesKeys.routesImport += "binders.CustomBinders.optionDateBinder"
Однако если задать запрос-параметр с помощью опции [Date] для примера, я получаю сообщение об ошибке
No QueryString binder found for type Option[java.sql.Date]. Try to implement an implicit QueryStringBindable for this type.
Так что это, очевидно, не масштаб. Как определить привязки, чтобы они существовали в области видимости? Я не могу найти 2.4-документацию для этого, но 2.5-documentation ничего не говорит о необходимости добавить их в Build.scala