Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get query string parameters in java play framework?

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.

like image 201
Sadik Avatar asked Sep 10 '25 08:09

Sadik


2 Answers

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.

like image 91
Schleichardt Avatar answered Sep 12 '25 22:09

Schleichardt


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.

like image 40
koppor Avatar answered Sep 12 '25 22:09

koppor



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!