Play 2.0 Java:从请求绑定数组

Play 2.0 Java:从请求绑定数组,java,playframework-2.0,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(); 但是我当然不知道索引

我。。。卡在o.o

我已收到国外请求中的参数:

param[62537]=abc;
param[20356]=cde;
param[92837]=fgh;
我正在寻找任何绑定它们的方法,即使用
DynamicForm

我可以通过以下方式获取参数:

DynamicForm dynamicForm = form().bindFromRequest();
String firstParam = dynamicForm.field("param[62537]").value();
但是我当然不知道索引,因为它们是在独立应用程序创建的
客户端
表单中选择的

当我试图使用:

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无法做到这一点?

这不起作用的原因是框架中还没有列表[String]或数组[String]的QueryStringBinder可用。据我所知,这是为第2.1场比赛计划的


如果您现在需要它,您可以尝试下面显示的解决方案:

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

Set<String> keys = request().body().asFormUrlEncoded().keySet();
for (String key : keys) {
     // check if key begin with "param["
}
Set keys=request().body().asFormUrlEncoded().keySet();
用于(字符串键:键){
//检查键是否以“param[”开头
}

谢谢您提供的信息,我需要检查是否可以(以及如何)在Java controller中使用它。在play 2.1中你会怎么做?谢谢Nico,我刚开始考虑这个解决方案,等等,你写的。我不在乎它现在是否漂亮,因为问题对我来说是个拦截器:)我很高兴我终于帮到你了!在play 2.1.3中,我找不到更好的选择。我在评论中实现了一个变体。这个解决方案n可行,但我只是想看看是否有更好的解决方案用于play 2.3.8?