gpt4 book ai didi

java - 在 Play! 中处理字段集框架 2.3 (Java)

转载 作者:行者123 更新时间:2023-11-30 09:03:07 24 4
gpt4 key购买 nike

我想知道怎么玩!处理使用多个同名字段的表单。

例如,看看这个表单片段:

<div class="controls" id="orderlines-container">
<div class="orderline form-inline">

<select class="form-control" name="productId[]">
<option disabled selected>Select product...</option>
@for(product<-Product.findAll()) {
<option value="@product.id">@product.name</option>
}
</select>

<input class="form-control" type="number" name="quantity[]" />

<select class="form-control" name="price[]">
<option value="memberPrice" >Member price</option>
<option value="publicPrice" >Public price</option>
</select>

<a href="#" class="btn btn-lg btn-remove"> <span class="glyphicon glyphicon-remove"> </span> </a>
</div>
<a href="#" class="btn btn-success btn-sm" id="btn-add-create"> Add line...</a>
</div>

我使用括号表示法是因为用户可以通过单击“添加行...”按钮添加任意数量的订单行。单击按钮时,JavaScript 函数会克隆 <div class="orderline">并将其附加在下面。所以基本上,提交的表单包含多个订单。

现在我想做的是收集 Controller 中的所有数据,但我不知道该怎么做。有些人建议我在 Controller 中做这样的事情:

public static Result createOrder(String[] quantity, String[] productId, String[] price) {
for(int i=0; i<quantity.length; i++){
...
}
for(int i=0; i<productId.length; i++){
...
}
for(int i=0; i<price.length; i++){
...
}
}

但问题是它需要我实现自定义隐式 QueryStringBindable对于类型 Array[String] .对于这样一个基本功能来说,这不是太过分了吗?

所以我的问题是我如何处理具有可变数量的同名参数的表单?例如,您将如何实现一个购物车,在其中创建多个订单行(在一个完全随机订单),然后提交它们以创建订单?

PS:我已经尝试使用不同的名称(例如第一行的 [ productId0quantity0price0 ] ,然后是 [ productId1quantity1price1 ] 等等。 ..) 对于每个输入,使用 JavaScript,但它最终变得太复杂而无法保持索引准确......

最佳答案

我在这里找到了答案:https://stackoverflow.com/a/20584282/2523628

解决方案是使用

获取原始数据
Map<String,String[]> params = request().body().asFormUrlEncoded();

所有的值都存储在一个 Map 中,如下所示:

userId
- 1
orderDate
- 2014-09-10T14:21
productId[]
- 21
- 61
quantity[]
- 1
- 2
price[]
- memberPrice
- memberPrice
status
- processed

然后只需手动解析这些值。看起来每个数组中的值都以相同的顺序存储,所以我仍然无法知道哪些匹配(这只是一个猜测)。

此外,括号表示法是无用的。如果删除,数据仍然相同,顺序相同。

我还在想是否还有其他解决方案,尤其是使用自动绑定(bind)功能的解决方案。

关于java - 在 Play! 中处理字段集框架 2.3 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com