6

我...卡住了oO

我在国外请求中有参数:

param[62537]=abc;
param[20356]=cde;
param[92837]=fgh;

我正在寻找任何绑定它们的方法,即。与DynamicForm.

我可以得到参数:

DynamicForm dynamicForm = form().bindFromRequest();
String firstParam = dynamicForm.field("param[62537]").value();

但是我当然不知道索引,因为它们是在client-side独立应用程序创建的表单中选择的。

当我尝试使用时:

String[] firstParam = dynamicForm.field("param").value(); // it's NULL
String[] firstParam = dynamicForm.get("param"); // it's NULL

甚至

String[] params = request().body().asFormUrlEncoded().get("param");
     // it's still NULL

我错过了一些非常基本的东西,还是 Play 无法做到这一点?

4

2 回答 2

6

不是最漂亮的方法,但是您是否尝试获取 asFormUrlEncoded 返回的 Map 的键:

Set<String> keys = request().body().asFormUrlEncoded().keySet();
for (String key : keys) {
     // check if key begin with "param["
}
于 2012-08-19T13:13:50.587 回答
5

这不起作用的原因是框架中还没有用于 List[String] 或 Array[String] 的 QueryStringBinder。据我所知,这是为 Play 2.1 计划的。

如果您现在需要它,您可以尝试此处显示的解决方案:QueryStringBinder for List[String]

于 2012-08-19T10:26:56.890 回答