如何在java play框架中获取查询字符串参数?
2022-09-01 18:11:44
我对java游戏框架很陌生。我已经设置了所有正常的路由,如/something/:somthingValue和所有其他路由。现在我想创建路由接受查询参数,如
x=10&y=20&z=30
在这里,我想获取“?”之后的所有参数作为key==>值对。
我对java游戏框架很陌生。我已经设置了所有正常的路由,如/something/:somthingValue和所有其他路由。现在我想创建路由接受查询参数,如
x=10&y=20&z=30
在这里,我想获取“?”之后的所有参数作为key==>值对。
您可以将查询参数连接到路由文件中:
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
在 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 以获取更长的解释。