【问题标题】:Play 2.0 Java: Bind an array from requestPlay 2.0 Java:从请求中绑定一个数组
【发布时间】:2012-08-18 13:43:46
【问题描述】:

我...卡住了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 无法做到这一点?

【问题讨论】:

    标签: java playframework-2.0


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 Nico 我刚开始考虑这个解决方案,等等 - 你写的。我不在乎现在是否漂亮,因为问题对我来说是一个障碍:)
    • 很高兴终于帮到了你!
    • 从 2.1.3 开始,我找不到更好的选择。我在评论中实现了一个变体。
    • 这个解决方案有效,但我只是想检查一下是否有更好的解决方案来玩 2.3.8?
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的信息,我需要检查是否可以(以及如何)在 Java 控制器中使用它。
    • 在 play 2.1 中你会如何做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2012-09-17
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多