Package play.mvc
Interface PathBindable<T extends PathBindable<T>>
-
public interface PathBindable<T extends PathBindable<T>>
Binder for path parameters.Any type
T
that implements this class can be bound to/from a path parameter. The only requirement is that the class provides a noarg constructor.For example, the following type could be used to bind an Ebean user:
@Entity class User extends Model implements PathBindable<User> { public String email; public String name; public User bind(String key, String email) { User user = findByEmail(email); if (user != null) { user; } else { throw new IllegalArgumentException("User with email " + email + " not found"); } } public String unbind(String key) { return email; } public String javascriptUnbind() { return "function(k,v) {\n" + " return v.email;" + "}"; } // Other ebean methods here }
Then, to match the URL/user/[email protected]
, you could define the following route:GET /user/:user controllers.Users.show(user: User)
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description T
bind(String key, String txt)
Bind an URL path parameter.String
javascriptUnbind()
Javascript function to unbind in the Javascript router.String
unbind(String key)
Unbind a URL path parameter.
-
-
-
Method Detail
-
bind
T bind(String key, String txt)
Bind an URL path parameter.- Parameters:
key
- Parameter keytxt
- The value as String (extracted from the URL path)- Returns:
- The object, may be this object
- Throws:
RuntimeException
- if this object could not be bound
-
unbind
String unbind(String key)
Unbind a URL path parameter.- Parameters:
key
- Parameter key- Returns:
- a suitable string representation of T for use in constructing a new URL path
-
javascriptUnbind
String javascriptUnbind()
Javascript function to unbind in the Javascript router.- Returns:
- The javascript function, or null if you want to use the default implementation.
-
-