trait
PathBindable
[A]
extends AnyRef
Abstract Value Members
-
def
bind
(key: String, value: String): Either[String, A]
-
def
unbind
(key: String, value: A): String
Concrete Value Members
-
def
!=
(arg0: AnyRef): Boolean
-
def
!=
(arg0: Any): Boolean
-
def
##
(): Int
-
def
==
(arg0: AnyRef): Boolean
-
def
==
(arg0: Any): Boolean
-
def
asInstanceOf
[T0]
: T0
-
def
clone
(): AnyRef
-
def
eq
(arg0: AnyRef): Boolean
-
def
equals
(arg0: Any): Boolean
-
def
finalize
(): Unit
-
def
getClass
(): java.lang.Class[_]
-
def
hashCode
(): Int
-
def
isInstanceOf
[T0]
: Boolean
-
def
javascriptUnbind
: String
-
def
ne
(arg0: AnyRef): Boolean
-
def
notify
(): Unit
-
def
notifyAll
(): Unit
-
def
synchronized
[T0]
(arg0: ⇒ T0): T0
-
def
toString
(): String
-
def
wait
(): Unit
-
def
wait
(arg0: Long, arg1: Int): Unit
-
def
wait
(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
Binder for URL path parameters.
You can provide an implementation of
PathBindable[A]for any typeAyou want to be able to bind directly from the request path.For example, given this class definition:
You can define a binder retrieving a
Userinstance from its id, useable like the following:// In your routes: // GET /show/:user controllers.Application.show(user) // For example: /show/42 object Application extends Controller { def show(user: User) = Action { … } }The definition the binder can look like the following:
object User { implicit def pathBinder(implicit intBinder: QueryStringBindable[Int]) = new PathBindable[User] { override def bind(key: String, value: String): Either[String, User] = { for { id <- intBinder.bind(key, value).right user <- User.findById(id).toRight("User not found").right } yield user } override def unbind(key: String, user: User): String = { intBinder.unbind(user.id) } } }