|
Play Framework/Scala example source code file (QueryStringBindable.java)
The QueryStringBindable.java Play Framework example source code/* * Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com> */ package play.mvc; import java.util.*; import play.libs.F.*; /** * Binder for query string parameters. * * Any type <code>T</code> 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: * * <pre> * 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" + * "}"; * } * } * </pre> * * Then, to match the URL <code>/foo?p.index=5&p.size=42</code>, you could define the following route: * * <pre> * GET /foo controllers.Application.foo(p: Pager) * </pre> * * Of course, you could ignore the <code>p</code> key specified in the routes file and just use hard coded index and * size parameters if you pleased. */ public interface QueryStringBindable<T extends QueryStringBindable<T>> { /** * Bind a query string parameter. * * @param key Parameter key * @param data The query string data * @return An instance of this class (it could be this class) if the query string data can be bound to this type, * or None if it couldn't. */ public Option<T> bind(String key, Map<String,String[]> data); /** * Unbind a query string parameter. This should return a query string fragment, in the form * <code>key=value[&key2=value2...]</code>. * * @param key Parameter key */ public String unbind(String key); /** * Javascript function to unbind in the Javascript router. * * If this bindable just represents a single value, you may return null to let the default implementation handle it. */ public String javascriptUnbind(); } Other Play Framework source code examplesHere is a short list of links related to this Play Framework QueryStringBindable.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.