首页 > 解决方案 > 如何使用数组字段验证表单?

问题描述

我有一个具有@ManyToMany 关系的用户模型。我想提交一个带有 ID 数组的表单,但验证返回错误。

public class User extends Model {

  @ManyToMany
  private List<Stock> stocks;

  public List<Stock> getStocks() {
    return stocks;
  }

  public void setStocks(List<Long> stockIds) {
    stocks = (stockIds == null) ? null : stockIds.stream().map(Stock::getById).collect(Collectors.toList());
  }

}

在我的 HTML 中:

<select name="stocks[]" class="form-control" multiple>
  <option value="1">Test</option>
</select>

在我的控制器中:


Form<User> form = formFactory.form(User.class).bindFromRequest();

if (form.hasErrors()) {
  System.out.println(form);
}

输出给了我: Form(of=class models.User, data={stocks[0]=1}, value=Optional[models.User@2], errors={stocks[0]=[ValidationError(stocks[0],[error.invalid],[])]})

知道为什么吗?

标签: javaplayframework

解决方案


推荐阅读