public interface QueryStringBindable<T extends QueryStringBindable<T>>
T
that implements this class can be bound to/from query one or more query string parameters.
The only requirement is that the class provides a noarg constructor.
For example, the following type could be used to encode pagination:
class Pager implements QueryStringBindable<Pager> { public int index; public int size; public Option<Pager> bind(String key, Map<String, String[]> data) { if (data.contains(key + ".index" && data.contains(key + ".size") { try { index = Integer.parseInt(data.get(key + ".index")[0]); size = Integer.parseInt(data.get(key + ".size")[0]); return Some(this); } catch (NumberFormatException e) { return None(); } } else { return None(); } } public String unbind(String key) { return key + ".index=" + index + "&" + key + ".size=" + size; } public String javascriptUnbind() { return "function(k,v) {\n" + " return encodeURIComponent(k+'.index')+'='+v.index+'&'+encodeURIComponent(k+'.size')+'='+v.size;\n" + "}"; } }Then, to match the URL
/foo?p.index=5&p.size=42
, you could define the following route:
GET /foo controllers.Application.foo(p: Pager)Of course, you could ignore the
p
key specified in the routes file and just use hard coded index and
size parameters if you pleased.Modifier and Type | Method and Description |
---|---|
F.Option<T> |
bind(java.lang.String key,
java.util.Map<java.lang.String,java.lang.String[]> data)
Bind a query string parameter.
|
java.lang.String |
javascriptUnbind()
Javascript function to unbind in the Javascript router.
|
java.lang.String |
unbind(java.lang.String key)
Unbind a query string parameter.
|
F.Option<T> bind(java.lang.String key, java.util.Map<java.lang.String,java.lang.String[]> data)
key
- Parameter keydata
- The query string datajava.lang.String unbind(java.lang.String key)
key=value[&key2=value2...]
.key
- Parameter keyjava.lang.String javascriptUnbind()