【发布时间】:2014-04-21 19:02:46
【问题描述】:
我正在使用 Play 框架 2.2。我有一个关于表单中的多个复选框以及如何正确绑定和处理它们的问题。我正在寻找 Java 解决方案。
假设我们有一个博客网站。我们希望实现这样的功能:当用户创建/编辑博客条目时,他们可以选择向该博客条目添加零到多个标签。这些标签选项在表单上显示为一长串复选框。例如,如果他/她创建了博客条目“业余时间在月球上要做的 10 件事”,并希望将其与“观星”、“步行”和“高尔夫”标签相关联,他/她会只需在创建过程中选中相应的复选框即可。
我不确定如何将模型绑定到视图或在提交请求后如何处理复选框列表。这是一个实验代码示例。
首先我们有模型:(它们是 ebean 实体)
public class Blog extends Model {
...
@ManyToMany(cascade=CascadeType.REMOVE)
public List<Tag> tags = new ArrayList<>();
...
}
public class Tag extends Model {
@Id
public Long id;
public String name;
...
}
在视图中,我们将完整的标签列表传递给视图: (我不确定这个方法是否正确)
@(tags: java.util.List[Tag], blogEntryForm: Form[Blog])
...
@form(routes.Application.create(), 'id -> "blogEntryForm") {
...
@for((tag, index) <- tags.zipWithIndex) {
<div class="checkbox">
<label>
<input type="checkbox" name="tags[@index]" value="@tag.id">
@tag.name
</label>
</div>
}
...
}
在控制器中,我们处理表单:
public static Result createBlogEntry() {
Form<Blog> filledForm = Form.form(Blog.class).bindFromRequest();
if (filledForm.hasErrors()) {
...
}
// process checkboxes
???
}
任何帮助将不胜感激。
【问题讨论】:
标签: java forms checkbox playframework playframework-2.0