2013-04-09 19 views
19

私は非常に新しいJavaフレームワークをプレイしています。/something /:somthingValueなどすべての通常のルートを設定しました。今、私はインクルードがJavaプレイフレームワークでクエリ文字列パラメータを取得する方法は?

/何かのようなクエリパラメータを受け入れるルートを作成したいですか?ここでは= 30

X = 10 & Y = 20 & zの私は、後にすべてのparamsを取得したいです "?"キー==>値のペアとして。

答えて

32

あなたは、routesファイルにあなたのクエリパラメータに配線することができ:

セクションで

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 

cはURLの2倍であることに注意してください。

+0

私はリクエストのgetQueryString()メソッドを参照してくださいすることはできませんよ()。それは私が演劇2.0を使用していてあなたは2.0.4を使用しているからですか? – Sadik

+0

あなたは正しいです、http://www.playframework.com/documentation/api/2.0/java/play/mvc/Http.Request.htmlにはgetQueryString()は含まれていませんがrequest()。queryString()はあなたが必要です。 – Schleichardt

+0

ありがとうたくさんの男。それに良いチュートリアルを教えていただけますか?それはドキュメントです。 – Sadik

7

あなたは地図とすべてのクエリ文字列パラメータを取得することができます。

Controller.request().queryString() 

このメソッドはMap<String, String[]>オブジェクトを返します。あなたがそれらを得るJava/Play 1.x

0

プレイ2.5.Xで
Request request = Request.current(); 
    String arg1 = request.params.get("arg1"); 

    if (arg1 != null) { 
     System.out.println("-----> arg1: " + arg1); 
    } 
9

、それは、一つには、デフォルト値を置くことができる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を参照してください。

0

あなたはFormFactoryを使用することができます。

DynamicForm requestData = formFactory.form().bindFromRequest(); 
String firstname = requestData.get("firstname"); 
関連する問題