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

时间:2012-08-18 13:43:47

标签: java playframework-2.0

我...卡住o.O

我在外国请求中提到了参与:

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只是不能那样做?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

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

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