Play 2.0 Java:根据请求绑定数组

bie*_*ior 6 java playframework-2.0

我...卡住了

我在外国请求中参考:

param[62537]=abc;
param[20356]=cde;
param[92837]=fgh;
Run Code Online (Sandbox Code Playgroud)

我正在寻找任何方式来绑定它们,即.与DynamicForm.

我可以得到:

DynamicForm dynamicForm = form().bindFromRequest();
String firstParam = dynamicForm.field("param[62537]").value();
Run Code Online (Sandbox Code Playgroud)

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

当我尝试使用时:

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

甚至

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

我是否错过了一些非常基本的东西,或者Play只是不能那样做?

nde*_*rge 6

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

Set<String> keys = request().body().asFormUrlEncoded().keySet();
for (String key : keys) {
     // check if key begin with "param["
}
Run Code Online (Sandbox Code Playgroud)


小智 5

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

如果你现在需要它,你可以尝试这里显示的解决方案:List [String]的QueryStringBinder