play.api.mvc

PathBindable

trait PathBindable [A] extends AnyRef

Binder for URL path parameters.

You can provide an implementation of PathBindable[A] for any type A you want to be able to bind directly from the request path.

For example, given this class definition:

  case class User(id: Int, name: String, age: Int)

You can define a binder retrieving a User instance 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)
      }
    }
  }
Annotations
@implicitNotFound( ... )
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Hide All
  2. Show all
  1. PathBindable
  2. AnyRef
  3. Any
Visibility
  1. Public
  2. All

Abstract Value Members

  1. def bind (key: String, value: String): Either[String, A]

    Bind an URL path parameter.

    Bind an URL path parameter.

    key

    Parameter key

    value

    The value as String (extracted from the URL path)

    returns

    Right of the value or Left of an error message if the binding failed

    Attributes
    abstract
  2. def unbind (key: String, value: A): String

    Unbind a URL path parameter.

    Unbind a URL path parameter.

    key

    Parameter key

    value

    Parameter value.

    Attributes
    abstract

Concrete Value Members

  1. def != (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  2. def != (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  3. def ## (): Int

    Attributes
    final
    Definition Classes
    AnyRef → Any
  4. def == (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  5. def == (arg0: Any): Boolean

    Attributes
    final
    Definition Classes
    Any
  6. def asInstanceOf [T0] : T0

    Attributes
    final
    Definition Classes
    Any
  7. def clone (): AnyRef

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  8. def eq (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  9. def equals (arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize (): Unit

    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  11. def getClass (): java.lang.Class[_]

    Attributes
    final
    Definition Classes
    AnyRef → Any
  12. def hashCode (): Int

    Definition Classes
    AnyRef → Any
  13. def isInstanceOf [T0] : Boolean

    Attributes
    final
    Definition Classes
    Any
  14. def javascriptUnbind : String

    Javascript function to unbind in the Javascript router.

  15. def ne (arg0: AnyRef): Boolean

    Attributes
    final
    Definition Classes
    AnyRef
  16. def notify (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  17. def notifyAll (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
  18. def synchronized [T0] (arg0: ⇒ T0): T0

    Attributes
    final
    Definition Classes
    AnyRef
  19. def toString (): String

    Definition Classes
    AnyRef → Any
  20. def wait (): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  21. def wait (arg0: Long, arg1: Int): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()
  22. def wait (arg0: Long): Unit

    Attributes
    final
    Definition Classes
    AnyRef
    Annotations
    @throws()

Inherited from AnyRef

Inherited from Any