Join the Stack Overflow Community
Stack Overflow is a community of 6.8 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

I'm very new to java play framework. I've set up all the normal routes like /something/:somthingValue and all the others. Now I want to create route the accepts query parameters like

/something?x=10&y=20&z=30

Here I want to get all the params after "?" as key==>value pair.

share|improve this question
up vote 26 down vote accepted

You can wire in your query parameters into the routes file:

http://www.playframework.com/documentation/2.0.4/JavaRouting in section "Parameters with default values"

Or you can ask for them in your Action:

public class Application extends Controller {

    public static Result index() {
        final Set<Map.Entry<String,String[]>> entries = request().queryString().entrySet();
        for (Map.Entry<String,String[]> entry : entries) {
            final String key = entry.getKey();
            final String value = Arrays.toString(entry.getValue());
            Logger.debug(key + " " + value);
        }
        Logger.debug(request().getQueryString("a"));
        Logger.debug(request().getQueryString("b"));
        Logger.debug(request().getQueryString("c"));
        return ok(index.render("Your new application is ready."));
    }
}

For example the http://localhost:9000/?a=1&b=2&c=3&c=4 prints on the console:

[debug] application - a [1]
[debug] application - b [2]
[debug] application - c [3, 4]
[debug] application - 1
[debug] application - 2
[debug] application - 3

Note that c is two times in the url.

share|improve this answer
    
I'm not able to see getQueryString() method of request(). is it because I'm using play 2.0 and you're using 2.0.4 ? – Sadik Apr 9 '13 at 18:22
    
You are right, playframework.com/documentation/api/2.0/java/play/mvc/… does not contain getQueryString() but request().queryString() can give you all you need. – Schleichardt Apr 9 '13 at 18:27
    
Thanks a lot man. can you suggest me some good tutorials on it? Except it's documentation. – Sadik Apr 9 '13 at 18:53
2  
Great, then please mark my answer accepted. A list of Play tutorials can be found on groups.google.com/forum/?fromgroups=#!topic/play-framework/… – Schleichardt Apr 9 '13 at 19:05
    
One more issue, as play 2.0 has not getQueryString() method and Arrays.toString(entry.getValue()) returns value with [] what if I don't want those [] ? I just want value as we're getting with getQueryString() method. Do I've to switch to latest version of Play ? – Sadik Apr 10 '13 at 7:16

You can get all query string parameters as a Map:

Controller.request().queryString()

This method return a Map<String, String[]> object.

share|improve this answer

In Play 2.5.x, it is made directly in conf/routes, where one can put default values:

# Pagination links, like /clients?page=3
GET   /clients              controllers.Clients.list(page: Int ?= 1)

In your case (when using strings)

GET   /something            controllers.Somethings.show(x ?= "0", y ?= "0", z ?= "0")

When using strong typing:

GET   /something            controllers.Somethings.show(x: Int ?= 0, y: Int ?= 0, z: Int ?= 0)

See: https://www.playframework.com/documentation/2.5.x/JavaRouting#Parameters-with-default-values for a longer explanation.

share|improve this answer

In Java/Play 1.x you get them with:

    Request request = Request.current();
    String arg1 = request.params.get("arg1");

    if (arg1 != null) {
        System.out.println("-----> arg1: " + arg1);
    } 
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.