将包添加到您的项目 Build.scala:
routesImport ++= "binders.CustomBinders._"
使用查询字符串的示例:
package binders;
import org.joda.time.DateTime
import java.util.Date
import java.text.SimpleDateFormat
import play.api.mvc.QueryStringBindable
import java.net.URLEncoder
import org.joda.time.format.DateTimeFormat
import org.joda.time.DateTimeZone
object CustomBinders {
implicit def queryStringBinder(implicit strBinder: QueryStringBindable[String]) = new QueryStringBindable[DateTime] {
override def bind(key: String, params: Map[String, Seq[String]]): Option[Either[String,DateTime]] = {
for {
dateStr <- strBinder.bind(key, params)
} yield {
dateStr match {
case (Right(dateStr)) => {
val formatter = new SimpleDateFormat(
"EEE, d MMM yyyy HH:mm:ss z");
try {
val someDate = formatter.parse(dateStr);
Right(new DateTime(someDate.getTime(),DateTimeZone.UTC))
} catch {
case e: NumberFormatException => Left("Cannot parse parameter " + key + " as DateTime: " + e.getMessage)
}
}
case _ => Left("Unable to bind DateTime")
}
}
}
override def unbind(key: String, value: DateTime) = {
val fmt = DateTimeFormat
.forPattern("EEE, d MMM yyyy HH:mm:ss z");
strBinder.unbind(key, fmt.print(value))
}
}
}