【问题标题】:How can I bind multiple checkboxes to a list in Play framework?如何将多个复选框绑定到 Play 框架中的列表?
【发布时间】:2012-03-30 21:39:01
【问题描述】:

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

#{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 做到这一点?

【问题讨论】:

    标签: forms binding playframework


    【解决方案1】:

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

    Set<Long> bars
    

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

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

    稍后,在控制器处理程序中,您应该使用 JPA 按 id 查找条形图,并添加到 foo 的集合中:

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

    再见
    汉斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      相关资源
      最近更新 更多