如何在java play框架中获取查询字符串参数



我是java play框架的新手。我已经设置了所有正常的路由,如/something/:somthingValue和所有其他的。现在我想创建一个路由,接受像

这样的查询参数

/什么? x = 10, y = 20, z = 30

这里我想获得"?"之后的所有参数作为键==>值对。

你可以在路由文件中加入你的查询参数:

http://www.playframework.com/documentation/2.0.4/JavaRouting

或者你可以在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."));
    }
}

例如,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中出现了两次

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)

您可以将所有查询字符串参数作为Map:

Controller.request().queryString()

这个方法返回一个Map<String, String[]>对象。

Java/Play 1.x中,您可以使用:

    Request request = Request.current();
    String arg1 = request.params.get("arg1");
    if (arg1 != null) {
        System.out.println("-----> arg1: " + arg1);
    } 

您可以使用FormFactory:

DynamicForm requestData = formFactory.form().bindFromRequest();
String firstname = requestData.get("firstname");

相关内容

  • 没有找到相关文章

最新更新