如何将多个复选框绑定到Play框架中的列表?

时间:2012-03-30 10:34:39

标签: forms binding playframework

我在表单中有一个复选框列表,它基于系统中的一些现有对象,如下所示:

#{list items:foobars, as:'bar'}
    <div>
        #{set name:"foo.bars[" + bar_index + "]" /}
        <label for="${bar.name}">${bar.name}</label>
        <input id="${bar.name}" name="${name}" type="checkbox">
    </div>
#{/list}

我希望Play将它们绑定到Foo对象应包含的Bar对象列表。 (Foo和Bar有很多对多的关系)

这不起作用。我怎么能用Play做到这一点?

1 个答案:

答案 0 :(得分:2)

在我的情况下,我使用了旧的Long集合绑定,我无法使用id建议的字段命名来生成JPA关联集合的bindind:使用下一个集合来绑定在Web表单上选择的id:< / p>

Set<Long> bars

请记住,如果没有选中复选框,则该集合可能为null且长度不为零,因此验证代码应为:

if (bars == null || bars.size() == 0)
   validation.addError("bars", "Please selecta at least one bar");

接下来,在控制器处理程序中,您应该使用id找到JPA find,并添加到foo的集合中:

for (Long id : bars)
   foo.bars.add((Bar) Bar.findById(id));

再见
汉斯