25

私はJavaプレイフレームワークが初めてです。/something/:somthingValue などの通常のルートをすべて設定しました。今、次のようなクエリパラメーターを受け入れるルートを作成したい

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

ここでは、「?」の後にすべてのパラメーターを取得したいと考えています。キー==>値のペアとして。

4

5 に答える 5

37

クエリ パラメータをルート ファイルに配線できます。

http://www.playframework.com/documentation/2.0.4/JavaRoutingセクション「デフォルト値を持つパラメーター」

または、アクションでそれらを求めることができます:

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."));
    }
}

たとえばhttp://localhost:9000/?a=1&b=2&c=3&c=4、コンソールに次のように表示されます。

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

cURL に 2 回あることに注意してください。

于 2013-04-09T18:04:06.953 に答える
20

Play 2.5.x では、conf/routesデフォルト値を設定できる で直接作成されます。

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

あなたの場合(文字列を使用する場合)

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

強い型付けを使用する場合:

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

詳細な説明については、 https : //www.playframework.com/documentation/2.5.x/JavaRouting#Parameters-with-default-values を参照してください。

于 2016-08-07T23:00:58.807 に答える
9

すべてのクエリ文字列パラメーターを Map として取得できます。

Controller.request().queryString()

このメソッドはMap<String, String[]>オブジェクトを返します。

于 2014-11-01T12:10:26.897 に答える
0

あなたはJava/Play 1.xそれらを得る:

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

    if (arg1 != null) {
        System.out.println("-----> arg1: " + arg1);
    } 
于 2016-02-26T15:29:25.240 に答える